我的正则表达式是(?:[^\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/