Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式。匹配c中的双辅音_C#_Regex - Fatal编程技术网

C# 正则表达式。匹配c中的双辅音

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

我有一张很多单词的单子。我需要的是找到所有以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() 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____________________________。但是,如果它们从未出现在数据中,则可以使用。