c# - 为什么这个正则表达式不能正确匹配?

标签 c# .net regex

我基本上有这个:

Regex rx = new Regex(@"\$(?:(\$)|(\{(?<ex>.*?)\}))");
string s = "${P#(n*8+1)!=0$$P}${P#(n*8+1)!=0$N/A$[n*8+1]}";

Match m = rx.Match(s, 0);

第一个匹配项是 "${P#(n*8+1)!=0$N/A$[n*8+1]}",而它应该是 “${P#(n*8+1)!=0$$P}”。如果我在第一个 '$' 之前添加一个额外的空格,它就可以正常工作。

最佳答案

你们正在交换参数。 Regex.IsMatch 签名是:

public static bool IsMatch(string input, string pattern)

编辑:以下代码为我打印 True 两次。

var p = @"\$(?:(\$)|(\{(?<ex>.*?)\}))";
var regex = new Regex(p);
Console.WriteLine(regex.IsMatch(" ${foo}"));
Console.WriteLine(regex.IsMatch("${foo}"));

EDIT2:删除了之前的编辑,匹配对我有用。

关于c# - 为什么这个正则表达式不能正确匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936268/

相关文章:

C#删除列表中以#开头的元素

c# - 套接字在 X 消息后停止接收

regex - 在一行匹配后替换为第 N 行中存在的字符串

python - 如何在 re.sub 中附加/连接一个数字

在 Java 中工作的正则表达式在 Oracle 脚本中不起作用

c# - Javascript 显示 50 个文本框值的总和

c# - 将此var转换为long列表?

c# - 任意成员变量的任意计算

c# - .NET 类重构困境

.net - 将 blob 存储在 SQL Server 中而不将 blob 读入内存