使用边界创建正则表达式

时间:2010-11-06 21:28:40

标签: c# regex

我想在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。

有谁知道为什么? 谢谢 雷切尔

1 个答案:

答案 0 :(得分:2)

我认为

\G从不匹配。它仅在表达式的开头有意义,因为它表示表达式应该直接跟随前一个匹配。

如果省略\b,表达式会匹配三次“happy”,如果使用\b,则“happ”无法匹配,因此计数为零。

使用类似

的内容
@"happ(iness|ily)\b"
正如Kobi在评论中提出的那样。