2014-09-23 62 views
-7

在Java中的正則表達式:解釋這個正則表達式在Java中

'String'.replaceAll("([aeioucgjkqsxyzbfpvwdtmn1234567890])\\1+", "$1") 

有人能解釋不同的人物嗎?

+8

替換也許一個正則表達式的教程將是一個很好的第一步?或者對任何在線正則表達式評估者進行一些實驗?有些甚至是圖形化的,有助於將事情分解。 – 2014-09-23 14:39:04

+0

我知道什麼是正則表達式,但我沒有得到它的所有,特別是\\ 1+部分 – Lightvvind 2014-09-23 14:40:27

+0

regular-expressions.info – hjpotter92 2014-09-23 14:40:36

回答

2

說明:

  • [aeioucgjkqsxyzbfpvwdtmn1234567890]匹配列表中的一個字符。
  • ([aeioucgjkqsxyzbfpvwdtmn1234567890])捕獲char類的組將捕獲該單個字符。
  • \1+\1是一個指向組索引1內的字符的指針。在我們的例子中,單個字符被捕獲,因此它指向單個字符。 \1+指字符的一次或多次出現組索引1.

內例如:

aaaa 

上述正則表達式將捕獲的第一個字符,並檢查以下的一個或多個字符與第一個被捕獲的角色相同。如果是的話,則整個複製字符由一個單個字符(這是組索引1的內部)代替,即aaaa由單個a

DEMO

-3

括號內列出的所有字母將被替換爲$ 1,如果它們之後出現\ 1,這是一個文字反斜槓。加號(+)表示1或更多。

-3

括號內的任何一個或多個字符序列將被替換爲$ 1。

舉例來說,這將刪除你的字符串中的所有這些字符: 的System.out.println(Str.replaceAll( 「([aeioucgjkqsxyzbfpvwdtmn1234567890])\ 1+」, 「」));