C# 正则表达式匹配总是返回 false

Posted

技术标签:

【中文标题】C# 正则表达式匹配总是返回 false【英文标题】:C# regex match always return false 【发布时间】:2016-07-26 23:16:59 【问题描述】:

这是我的 c# 正则表达式匹配测试用例:

AAA
BB
AAA+15d
BB-205w

我使用的模式是:@"^(AAA|BB)([\+|\-]\d+[d|w])*$",当我在一些 .net 正则表达式测试器中在线测试它时,它说匹配。但是当我在 c# 代码中运行它时,最后两个测试用例总是返回 false。模式有什么问题?

【问题讨论】:

显示您的 C# 代码。顺便说一句,您在字符类中不需要 | (更改)。 [+-][dw] 就可以了。 正则表达式确实有效,但可以稍微增强为^(AAA|BB)([+-]\d+[dw])*$ var 模式 = @"^(AAA|BB)([+-]\d​​+[DW])*$"; bool isMatch =Regex.IsMatch(pattern, "AAA+180D", RegexOptions.IgnoreCase); item, pattern order reversed - 所以这个问题应该被关闭,因为由于错字而无法重现。 查看dotnetfiddle.net 以演示工作示例。这有助于获得回复并更清楚地说明您的问题。 【参考方案1】:

我无法重现上述行为

List<string> Input = new List<string>()  "AAA", "BB", "AAA+15d", "BB-205w" ;
string Pattern = @"^(AAA|BB)([+-]\d+[dw])*$";
foreach (string item in Input)

    Console.WriteLine(Regex.IsMatch(item, Pattern));

结果:

True 
True 
True 
True

【讨论】:

这可能仅对 demo 是必需的。这些字符串很可能是独立测试的。如果没有修饰符标志,OP 可以匹配前 2 个字符串。 @fubo 非常感谢你们,我看到了 c# 代码有什么问题。我有项目,模式顺序颠倒了。

以上是关于C# 正则表达式匹配总是返回 false的主要内容,如果未能解决你的问题,请参考以下文章

c# 正则表达式捕获

Lua 正则表达式

正则表达式匹配任何字符 5 次或更多次

c# 正则表达式 匹配中括号&颜色过滤

php中的正则表达式

JavaScript正则表达式三