有没有办法让正则表达式匹配除某些字符之外的任何内容?比如说,唯一不允许的字符是*字符。而不是列出正则表达式中允许的所有可能的字符,有什么可以说"所有不等于*的东西都是允许的#34;。
答案 0 :(得分:2)
您可以使用negated class character
可以使用的[^]
。因此,对于您的情况,您可以使用:
^[^*]+$
有用的debuggex图表是:
您可以在 negated class 上查看有关理论的更多信息。您可以在下面找到解释此内容的报价。
在开始方括号后键入插入符号否定字符类。结果是字符类匹配任何不在字符类中的字符。与点不同,否定的字符类也匹配(不可见)换行符。如果您不希望否定的字符类匹配换行符,则需要在类中包含换行符。
[^0-9\r\n]
匹配任何不是数字或换行符的字符。重要的是要记住,否定的字符类仍然必须与字符匹配。
q[^u]
并不意味着:" a q后面没有"。这意味着:" 一个q后跟一个不是你的角色"。它与字符串伊拉克中的q不匹配。它与q
以及q
中Iraq is a country
之后的空格匹配。确实:空间成为整体匹配的一部分,因为它是" 字符不是你的"与上面的regexp中的否定字符类匹配。如果您希望正则表达式与两个字符串中的q
和q
匹配,则需要使用否定前瞻:q(?!u)
。
答案 1 :(得分:-1)
[^ *]任何单个字符除外:* 每当我不得不使用正则表达式时,我通常会去rubular.com测试我的尝试。它也有一些例子,非常有用
答案 2 :(得分:-2)