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

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

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

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

如何更改我的正则表达式,使其与整个字符串匹配,即使它带有方括号也是如此?

提前致谢。

最佳答案

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

.net不支持[:cntrl:]类格式

\p{Cc}将匹配与[:cntrl:]类似的控制字符

您的正则表达式将是

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


这类似于

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




注意

[^\S\n]表示匹配换行符以外的空格字符,因此使用上述正则表达式还可以匹配空格

关于c# - 正则表达式忽略方括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17461894/

10-13 06:08