2015-04-22 85 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