Thread overview
ctRegex not matching correctly at word boundaries
Jul 08, 2018
Ivo
Jul 08, 2018
rikki cattermole
Jul 08, 2018
Ivo
July 08, 2018
First of all, I'm not an expert about regular expression syntax, however I believe there might be some strange bug when using ctRegex.

Consider the following code:

void main() {
        import std.regex: ctRegex, matchFirst;
	auto expression = ctRegex!("\bis\b");
	auto match = matchFirst("This island is beautiful", expression);
	if(match.empty) writeln("no match");
	else writeln("match");
}
when I compile and run I get the output "no match".

Looking online I found this website https://www.regular-expressions.info/wordboundaries.html where they explain that the above regex should match that string.

So I don't understand what's wrong with my code.

P.S.: using regex instead of ctRegex doesn't solve the problem.
July 08, 2018
On 08/07/2018 10:37 PM, Ivo wrote:
> First of all, I'm not an expert about regular expression syntax, however I believe there might be some strange bug when using ctRegex.
> 
> Consider the following code:
> 
> void main() {
>          import std.regex: ctRegex, matchFirst;
>      auto expression = ctRegex!("\bis\b");

auto expression = ctRegex!(`\bis\b`);

\b is bell escape code as per ASCII
July 08, 2018
On Sunday, 8 July 2018 at 10:58:24 UTC, rikki cattermole wrote:
> On 08/07/2018 10:37 PM, Ivo wrote:
>> First of all, I'm not an expert about regular expression syntax, however I believe there might be some strange bug when using ctRegex.
>> 
>> Consider the following code:
>> 
>> void main() {
>>          import std.regex: ctRegex, matchFirst;
>>      auto expression = ctRegex!("\bis\b");
>
> auto expression = ctRegex!(`\bis\b`);
>
> \b is bell escape code as per ASCII

Thanks a lot.
I forgot to put an r before the quotes. My silly mistake.