我的正则表达式为(?:[^\S\n]|[^[:cntrl:]])*
如果我尝试匹配Benjamin Edward Ben
它匹配整个字符串,即“Benjamin Edward Ben”。
如果我尝试用方括号匹配文字,即:“Benjamin Edw [ard] Ben”它匹配第一个方括号,即“Benjamin Edw”。
如果我尝试将文本与任何其他文本匹配,即“Benjamin Edw * ard ^ Ben”,则匹配整个字符串,即“Benjamin Edw * ard ^ Ben”。
如何改变我的正则表达式,使它与整个字符串匹配,即使它有方括号?
提前致谢。
答案 0 :(得分:2)
问题在于[:cntrl:]
..将其更改为\p{Cc}
[:cntrl:]
类格式
\p{Cc}
会匹配与[:cntrl:]
你的正则表达式是
(?:[^\S\n]|[^\p{Cc}])*
类似于
[^\S\n\p{Cc}]*
注意强>
[^\S\n]
表示匹配除换行符之外的空格字符。对于上面的正则表达式,您也会匹配空格
答案 1 :(得分:1)
要仅匹配字符串,我建议简化为([\w\s\[\]]+)
。将进一步澄清
答案 2 :(得分:0)
尝试在\\
的方括号前使用regex
。