获得"未终止[]设置." C#出错

tun*_*h24 6 c# regex

我在C#中使用以下正则表达式

Regex find = new Regex("[,\"]url(?<Url>[^\\]+)\\u0026");
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

"System.ArgumentException: parsing "[,"]url([^\]+)\u0026" - Unterminated [] set.
Run Code Online (Sandbox Code Playgroud)

我对正则表达式有点新意,所以如果我错了,请纠正我.正则表达式应该从文本匹配中提取网址,如:

,URL = HTTP://domain.com\u0026

"URL = HTTP://hello.com\u0026

Tim*_*ker 8

您需要使用逐字字符串:

Regex find = new Regex(@"[,""]url(?<Url>[^\\]+)\\u0026");
Run Code Online (Sandbox Code Playgroud)

编辑:但是,我将正则表达式更改为

Regex find = new Regex(@"(?<=[,""]url=)[^\\]+(?=\\u0026)");
Run Code Online (Sandbox Code Playgroud)

然后整个匹配就是URL本身.无需捕获子组.

  • 使用此:新的正则表达式(@"(?<= [,""])url =(?<Url> [^ \\\] +)(?= \\ u0026)");*编辑*gar,吞下我的\\! (2认同)

And*_*ett 7

你用\]转义其中一个括号,这意味着你有一个未终止的[.

这个备忘单非常适合.NET正则表达式,我将它打印在我的桌面上.完全推荐它!匹配\你想要\\.

哦是的,没有第一次编辑就错过了逐字的缺失.我会说蒂姆的建议.

另一个非常便于快速测试的在线工具Derek Slager的在线工具.