Welcome to Web-News
A Web-based News Reader
Subject Re: RegExp
From Sergey Gromov <snake.scaly@gmail.com>
Date Thu, 16 Oct 2008 02:58:51 +0400
Newsgroups digitalmars.D

Wed, 15 Oct 2008 18:01:04 -0400,
DF wrote:
> /**
>  * RegExp test.
>  */
> import std.regexp;
> import std.stdio;
>
> void main() {
>         string someString = "Hello world!";
>         auto regExp = new RegExp(r"[wW]orld");
>         auto result = regExp.search(someString);
>         //int k = regExp.test(someString);
>         if (result is null) {
>                 writefln("Not found!");
>         } else {
>                 writefln("Result:" ~ result[0]);
>         }
> }
>
> This code never writes the searched part, until we uncomment the line with test() method call, though there is a word matching the pattern. Why?

It shouldn't.  search() prepares the regexp for use in foreach loop.  The
correct function for you is find:

import std.regexp;
import std.stdio;

void main() {
        string someString = "Hello world!";
        auto regExp = new RegExp(r"[wW]orld");
        auto result = regExp.find(someString);
        if (result == -1) {
                writefln("Not found!");
        } else {
                writefln("Result:" ~ regExp[0]);
        }
}

Recent messages in this thread
 
-# RegExp DF 15-Oct-2008 06:01 pm
.-# Re: RegExp (Current message) Sergey Gromov 15-Oct-2008 06:58 pm
..\# Re: RegExp DF 15-Oct-2008 07:00 pm