C# 正则表达式。匹配c中的双辅音
我有一张很多单词的单子。我需要的是找到所有以ing、ed、ied结尾的单词,并在其前面加上单元音和双辅音: 应该匹配单词:乞讨,砰砰,曲折。不匹配不双辅音C# 正则表达式。匹配c中的双辅音,c#,regex,C#,Regex,我有一张很多单词的单子。我需要的是找到所有以ing、ed、ied结尾的单词,并在其前面加上单元音和双辅音: 应该匹配单词:乞讨,砰砰,曲折。不匹配不双辅音 \w*[^aoyie][aoyie]([^aoyie])\1(ed|ing|ied) 它在RegexPal.com上工作,但在C中不工作。不匹配任何单词,在列表中返回0个单词 我的代码: List<Book_to_Word> allWords = (from f in db2.Book_to_Words.AsEnumerable
\w*[^aoyie][aoyie]([^aoyie])\1(ed|ing|ied)
它在RegexPal.com上工作,但在C中不工作。不匹配任何单词,在列表中返回0个单词
我的代码:
List<Book_to_Word> allWords = (from f in db2.Book_to_Words.AsEnumerable() select f).ToList();
List<Book_to_Word> wordsNOTExist = (from f in allWords
where Regex.IsMatch(f.WordStr, @"^(\w*[^aoyie]+[aoyie]([^aoyie])(ed|ing|ied))$")
select f).ToList();
当我不使用\1时工作。但是返回单辅音的单词。尝试稍微放宽条件:
@"^[a-z]*[aoyie]([^aoyie])\1(ed|ing|ied)$"
您当前的正则表达式要求单词在双辅音和后缀之前至少有3个字符。所以乞讨和曲折是不相称的
不过,看到y在小组里,而u却不见了,例如被抢劫,这有点奇怪。你可能想再核实一下。我对ied之前的双辅音有点怀疑,但我将把它留在那里。感谢NHAHDH。
问题在括号外。当我移除它们时,它起了作用:
Regex.IsMatch(f.WordStr, @"^\w*[^aoyieu]+[aoyieu]([^aoyieu])\1(ed|ing|ied)$")
我想,维尔丹说的是\1。请检查一下。C与除perl之外的所有语言一样,不支持灵活版本的正则表达式expressions@loldop:C中支持反向引用:我更改了[^aoyie][aoyie][^aoyie]\1ed | ing | ied上的问题-但仍然不工作您是否在代码中正确转义了\了?以下是我的作品,并打印出真实的。。。var regex=new regex[a-z]*[aoyie][^aoyie]\\1ed | ing | ied;Console.WriteLineregex.IsMatchBegging@NHAHDH:将其编辑到您的答案中,以便它能够被适当地接受并不是说我可以控制regexpal.com上接受的内容,如果我输入上面的正则表达式,它与begged或zagging不匹配。它需要NHAHDH建议的修改才能这样做。您能否澄清使用\1有什么不起作用?它只是不返回东西,或者你得到了一个编译错误,它抛出了一个异常…?试着对之字形进行测试,它会失败,尽管我理解它不应该——用你的表达,你是说除了双辅音之前的一个之外,没有元音。NHAHDH的回答为您解决了这一问题。还应该注意的是,如果您愿意,您可以保留外圆括号并使用\2。您是对的。更新为Regex.IsMatchf.WordStr,@^\w*[^aoyieu]+[aoyieu][^aoyieu]\1ed|ing|ied$。现在匹配了zigzagging@Vildan:\w将使45435egging或_pp____________________________。但是,如果它们从未出现在数据中,则可以使用。