我有一个字符串"this [is] not req!red"
我正在尝试创建一个正则表达式,它将选择"字符"未在列表中指定
[-a-zA-Z.,-()=\s\+:?!*\;><0-9]
如何实现这一目标?
语言是C#
答案 0 :(得分:2)
您的正则表达式是positive character class,与其中指定的每个 legal 字符相匹配:
[-a-zA-Z.,\-()=\s+:?!*\;><0-9]
您不想要的角色不匹配。要切换此选项,仅匹配您想要的字符,请将^
添加为negative character class作为其第一个字符:
[^-a-zA-Z.,\-()=\s+:?!*\;><0-9]
要捕获匹配项,请将整个正则表达式放入capturing group:
([-a-zA-Z.,\-()=\s+:?!*\;><0-9])
或
([^-a-zA-Z.,\-()=\s+:?!*\;><0-9])
然后用您选择的语言迭代匹配。每个角色都在捕获组1中。
我不确定你的目标。更多信息将帮助我们为您提供更好的答案。
请考虑将Stack Overflow Regular Expressions FAQ加入书签以供将来参考。
答案 1 :(得分:1)
我认为你需要这个:
[^-a-zA-Z.,\-()=\s\+:?!*\;><0-9]
^
将否定列表中的每个字符。
演示:http://regex101.com/r/vX0oQ7
所以基本上在你的例子中,除了方括号之外,它不会选择任何东西。
this [is] not req!red
| |