Regex and negation?



我有一个Java字符串,我需要替换所有不是的字符

  • 字母数字字符
  • 或以下(可接受的)字符之一:-星号CCD_ 1,
    • 连字符CCD_ 2
    • 周期CCD_ 3
    • 和下划线_

我试过使用[^w*-_]。我可以用什么正则表达式来查找这些字符?

感谢@Pshemo,我需要的解决方案是:[^\w\*\-]

本文中:http://www.regular-expressions.info/charclass.html在否定字符类下,我们看到

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

重要的是要记住,被否定的字符类仍然必须与字符匹配。q[^u]并不意味着:"一个q后面没有一个u"。意思是:"一个q后面跟着一个不是u的字符"。它与字符串伊拉克中的q不匹配。它确实与伊拉克的q和q后面的空格相匹配。事实上:空格成为整体匹配的一部分,因为在上面的regexp中,"不是u的字符"是由否定字符类匹配的。">

最新更新