2015-10-11 45 views
-2

我寫了一個程序來檢測迴文。它適用於我所擁有的,但是我偶然發現了另一種語法,我想知道它到底意味着什麼?這個正則表達式語法在Java中意味着什麼?

這是我使用的代碼行:

userString = userString.toLowerCase().replaceAll("[^a-zA-Z]", ""); 

我明白的replaceAll代碼片段意思是「匹配的字符([...])不屬於(^)的範圍內az和AZ(a-zA-Z)「。

然而,這工作,以及:

replaceAll("[^(\p{L}')]", ""); 

我只是不知道如何翻譯成英文。我對正則表達式完全陌生,我發現它們非常迷人。感謝任何能告訴我這意味着什麼的人。

+3

http:// stackov erp.com/a/14891168/3166303 – leeor

回答

2

您應該檢查這個網站: https://regex101.com

它幫了我很多,當我正在編寫/測試/調試一些正則表達式;)

它給出如下解釋:

[^(\p{L}')]匹配單個字符在下面的列表中不存在:

  • (的文字字符(
  • \p{L}任何字母匹配任何語言
  • ')單個字符名單')從字面上
-1

兩個正則表達式是不一樣的:

  • [^a-zA-Z]任何字符匹配不是一個英文字母
  • [^(\p{L}')]匹配任何字符不是字母,報價或支架

即:第二個刪除括號和引號。

正則表達式\p{L}是「任何字母」的posix字符類。 IE這兩個正則表達式是在字母的情況下只相當於英語:

  • [a-zA-Z]
  • \p{L}
+4

'\ p {L}'匹配[tag:Unicode]常規類別'Letter'(它不是[POSIX字符類](http://www.regular-expressions.info) /posixbrackets.html)) – Mariano

相關問題