regex start-of-line

Jesse Phillips jessekphillips+D at gmail.com
Sat Feb 12 09:57:00 PST 2011


spir Wrote:

> Hello,
> 
> I have a regex bug in following conditions: users pass a series of regex 
> formats (strings) from which I create regex engines later used for lexing. To 
> ensure matching at start of (rest of) source, I prefix each format with '^'. 
> Right in most cases. But the following regex:
> 	`^(true)|(false)`
> matches "false" anywhere in text ==> bug. Is this normal? There is a kind of 
> ambiguity here, isn't there?
> 
> As a workaround, I replaced:
>          this.engine = Regex("^" ~ form);
> by
>          this.engine = Regex(format("^(%s)", form));
> And indeed
> 	`^((true)|(false))`
> does not match "false" anywhere else as at start of source.
> 
> Comments?

"The pipe has the lowest precedence of all operators."

http://www.regular-expressions.info/reference.html

Based on this page you should be able to do

`^(true|false)`

But I wouldn't be surprised if D would use e|f

"abc(def|xyz) matches abcdef or abcxyz"


More information about the Digitalmars-d-learn mailing list