Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
August 12, 2010 [Issue 4627] New: Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=4627 Summary: Ideas for std.regex.match usage syntax Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: Phobos AssignedTo: nobody@puremagic.com ReportedBy: bearophile_hugs@eml.cc --- Comment #0 from bearophile_hugs@eml.cc 2010-08-11 19:21:18 PDT --- Ideas for possible changes in std.regex.match() user interface, mostly to shorten it, but also to make it simpler to use. This is what you currently ned to use to iterate on matches: stringtext = "..."; foreach (m; match(text, regex(r"\d")).captures) { ... } The regex() there is useful because you can add attributes like "g" as second argument, but often I don't need attributes, while often I may appreciate a shorter syntax (even if I don't need a built-in regex syntax as in Ruby and Perl). So match() can accept as second argument both an engine (regex) or a string, when attributes are not necessary: foreach (m; match(text, r"\d").captures) { ... } Another possible idea to shorten the syntax is to make match() iterable (I don't know if this is possible or if it is a good idea), this also makes it simpler to use (no need to know about 'captures'): foreach (m; match(text, r"\d")) { ... } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
January 09, 2011 [Issue 4627] Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4627 Andrei Alexandrescu <andrei@metalanguage.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |andrei@metalanguage.com AssignedTo|nobody@puremagic.com |andrei@metalanguage.com -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 06, 2011 [Issue 4627] Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4627 Dmitry Olshansky <dmitry.olsh@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmitry.olsh@gmail.com --- Comment #1 from Dmitry Olshansky <dmitry.olsh@gmail.com> 2011-06-06 08:41:35 PDT --- It works exactly like that. Keeping in mind that captures is a range [full match, submatch0, submatch1, ...] fro a given match. And foreach (m; match(text, r"\d")) { ... } iterates over consecutive matches of regex (if "g" option is set, otherwise it's one iteration). Resolved ? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 06, 2011 [Issue 4627] Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4627 --- Comment #2 from bearophile_hugs@eml.cc 2011-06-06 10:33:45 PDT --- (In reply to comment #1) > Resolved ? You have improved the D regular expressions a lot, it seems. To me this program crashes at runtime (DMD 2.053): import std.stdio, std.regex; void main() { foreach (m; match("125 155 ss25", r"\d+")) writeln(m); } If I use this line it works: writeln(m.toString()); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 06, 2011 [Issue 4627] Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4627 --- Comment #3 from Dmitry Olshansky <dmitry.olsh@gmail.com> 2011-06-06 10:43:32 PDT --- Yeah, that's very embarassing bug related to writeln/formattedWrite. The reason is that toString seems to have less priority then range formatting. And ranges that return elements of the same type as range itself are unexpected in that formatting code. In essence, it's the same issue as this one http://d.puremagic.com/issues/show_bug.cgi?id=4604 So let's keep thing where they belong and if you have no futher things for this bugzilla, I think you should close it. And I think adding this simple example in issue 4604 won't hurt. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 06, 2011 [Issue 4627] Ideas for std.regex.match usage syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=4627 bearophile_hugs@eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED --- Comment #4 from bearophile_hugs@eml.cc 2011-06-06 11:10:24 PDT --- (In reply to comment #3) > So let's keep thing where they belong and if you have no futher things for this bugzilla, I think you should close it. Right. A benchmark for the regex: http://shootout.alioth.debian.org/debian/program.php?test=regexdna&lang=gdc&id=4 > And I think adding this simple example in issue 4604 won't hurt. Done. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation