获得“未终止[]设置。” C#出错

时间:2011-09-08 07:14:25

标签: c# regex

我正在使用C#

中的以下正则表达式
Regex find = new Regex("[,\"]url(?<Url>[^\\]+)\\u0026");

并收到此错误:

"System.ArgumentException: parsing "[,"]url([^\]+)\u0026" - Unterminated [] set.

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

,则url = HTTP://domain.com \ u0026

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

2 个答案:

答案 0 :(得分:8)

您需要使用逐字字符串:

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

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

Regex find = new Regex(@"(?<=[,""]url=)[^\\]+(?=\\u0026)");

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

答案 1 :(得分:6)

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

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

哦是的,没有第一次编辑就错过了没有逐字逐句。按照蒂姆的建议我会说。

另一个非常便于快速测试的在线工具是Derek Slager's online tool