正则表达式以匹配除特定字符之外的任

时间:2015-04-10 15:20:14

标签: regex

有没有办法让正则表达式匹配除某些字符之外的任何内容?比如说,唯一不允许的字符是*字符。而不是列出正则表达式中允许的所有可能的字符,有什么可以说"所有不等于*的东西都是允许的#34;。

3 个答案:

答案 0 :(得分:2)

您可以使用negated class character可以使用的[^]。因此,对于您的情况,您可以使用:

^[^*]+$

有用的debuggex图表是:

Regular expression visualization

您可以在 negated class 上查看有关理论的更多信息。您可以在下面找到解释此内容的报价。

否定字符类

  

在开始方括号后键入插入符号否定字符类。结果是字符类匹配任何不在字符类中的字符。与点不同,否定的字符类也匹配(不可见)换行符。如果您不希望否定的字符类匹配换行符,则需要在类中包含换行符。 [^0-9\r\n]匹配任何不是数字或换行符的字符。

     

重要的是要记住,否定的字符类仍然必须与字符匹配。 q[^u]并不意味着:" a q后面没有"。这意味着:" 一个q后跟一个不是你的角色"。它与字符串伊拉克中的q不匹配。它与q以及qIraq is a country之后的空格匹配。确实:空间成为整体匹配的一部分,因为它是" 字符不是你的"与上面的regexp中的否定字符类匹配。如果您希望正则表达式与两个字符串中的qq匹配,则需要使用否定前瞻:q(?!u)

答案 1 :(得分:-1)

[^ *]任何单个字符除外:* 每当我不得不使用正则表达式时,我通常会去rubular.com测试我的尝试。它也有一些例子,非常有用

答案 2 :(得分:-2)

This is explained in the manual.

解决方案是:

"[^*]*"