RegEx忽略方括号

时间:2013-07-04 04:29:25

标签: c# regex

我的正则表达式为(?:[^\S\n]|[^[:cntrl:]])*

如果我尝试匹配Benjamin Edward Ben它匹配整个字符串,即“Benjamin Edward Ben”。

如果我尝试用方括号匹配文字,即:“Benjamin Edw [ard] Ben”它匹配第一个方括号,即“Benjamin Edw”。

如果我尝试将文本与任何其他文本匹配,即“Benjamin Edw * ard ^ Ben”,则匹配整个字符串,即“Benjamin Edw * ard ^ Ben”。

如何改变我的正则表达式,使它与整个字符串匹配,即使它有方括号?

提前致谢。

3 个答案:

答案 0 :(得分:2)

问题在于[:cntrl:] ..将其更改为\p{Cc}

.net

不支持

[:cntrl:]类格式

\p{Cc}会匹配与[:cntrl:]

类似的控制字符

你的正则表达式是

 (?:[^\S\n]|[^\p{Cc}])*

类似于

[^\S\n\p{Cc}]*

注意

[^\S\n]表示匹配除换行符之外的空格字符。对于上面的正则表达式,您也会匹配空格

答案 1 :(得分:1)

要仅匹配字符串,我建议简化为([\w\s\[\]]+)。将进一步澄清

答案 2 :(得分:0)

尝试在\\的方括号前使用regex