2015-04-22 86 views
-2

我有一个Java字符串,我需要更换不正则表达式和否定?

  • 字母数字字符
  • 或以下(可接受的)字符中的一个的所有字符: -asterisk *
    • 连字符-
    • 期间.
    • 和下划线_

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

+0

难道你不能只用\ W – reggaeguitar

+0

你有没有尝试了否定字符类http://www.regular-expressions.info/charclass.html?它是如何不起作用的? – Pshemo

+0

@Pshemo谢谢你的链接。这似乎从我做过的少数测试far:[^ \ w \ * \ - \ _] – Lani1234

回答

0

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

从这篇文章:http://www.regular-expressions.info/charclass.html 在否定字符类,我们可以看到,

“打字在方括号后面插入一个插入符号,否定字符类,结果是字符类匹配任何不在字符类中的字符,与点不同,否定字符类也匹配(不可见)换行符。 t想要一个否定的字符类匹配换行符,需要在类中包含换行符。[^ 0-9 \ r \ n]匹配任何不是数字或lin的字符休息。

重要的是要记住否定字符类仍然必须匹配字符。 q [^ u]并不意味着:“一个没有跟着你”。它的意思是:“后面跟着一个不是你的角色”。它与字符串伊拉克中的q不匹配。在伊拉克是一个国家之后,它确实与q和q之后的空间相匹配。事实上:空间成为整体比赛的一部分,因为它是与上述正则表达式中的否定字符类相匹配的“字符不是au”。“

+0

我想你想逃避你的连字符。否则,你会得到所有在ASCII码(?)之间的'*'和'.'之间的代码。 –

+0

是的,对不起,格式化删除了我在*和 - 之前的转义字符。谢谢你收到。 – Lani1234