我想在c#中创建一个Regex,我写下面的代码:
string temp = "happ";
Regex reg = new Regex(temp + @"((\G(iness))|(\G(ily))*)\b");
string str = "happily happiness happy";
int x = reg.Matches(str).Count;
我的目标是只找到“愉快”和“快乐”,所以我写“\ b”来限制正则表达式。但当应用程序运行时,x eqquals为零,当“\ b”被删除时,x等于3。
有谁知道为什么? 谢谢 雷切尔
答案 0 :(得分:2)
\G
从不匹配。它仅在表达式的开头有意义,因为它表示表达式应该直接跟随前一个匹配。
如果省略\b
,表达式会匹配三次“happy”,如果使用\b
,则“happ”无法匹配,因此计数为零。
使用类似
的内容@"happ(iness|ily)\b"
正如Kobi在评论中提出的那样。