[Issue 7260] New: "g" on default in std.regex.match
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jan 9 13:52:11 PST 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7260
Summary: "g" on default in std.regex.match
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: bearophile_hugs at eml.cc
--- Comment #0 from bearophile_hugs at eml.cc 2012-01-09 13:52:08 PST ---
D2 code:
import std.stdio: write, writeln;
import std.regex: regex, match;
void main() {
string text = "abc312de";
foreach (c; text.match("1|2|3|4"))
write(c, " ");
writeln();
foreach (c; text.match(regex("1|2|3|4", "g")))
write(c, " ");
writeln();
}
It outputs (DMD 2.058 Head):
["3"]
["3"] ["1"] ["2"]
In my code I have seen that usually the "g" option (that means "repeat over the
whole input") is what I want.
So what do you think about making "g" the default?
Note: I have not marked this issue as "enhancement" because of this comment by
Dmitry Olshansky (found by drey_ on IRC #D):
http://dfeed.kimsufi.thecybershadow.net/discussion/thread/jc9hrl$2lpp$1@digitalmars.com#post-jc9mag:2430tq:241:40digitalmars.com
> Yet I have to issue yet another warning about new std.regex compared
> with old one:
>
> import std.stdio;
> import std.regex;
>
> void main() {
> string src = "4.5.1";
> foreach (c; match(src, regex(r"(\d+)")))
> writeln(c.hit);
> }
>
> previously this will find all matches, now it finds only first one. To
> get all of matches use "g" option.
>
> Seems like 100% compatibility was next to impossible.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list