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的主要内容,如果未能解决你的问题,请参考以下文章