[英]How does this regular expression with capturing group and backreference match in Java?
我很難理解某個Java正則表達式將匹配什么:
"<(\\w+)></\\1>"
我已經閱讀了此http://docs.oracle.com/javase/tutorial/essential/regex/
但是我仍然無法弄清楚該表達式將要匹配的內容,尤其是\\1
部分。 我可以看到<(\\w+)>
是一個與任何單詞匹配的所有格量詞,但我不明白為什么要使用()
(根據教程)來匹配一個組。
至於第二部分,我只是不知道\\1
將匹配什么。 我嘗試過
"001123344556678899".replaceAll("\\1", "");
因為我以為也許它與一個數字匹配,但是它給了我我的字符串,因為它沒有被替換。
它旨在匹配成對的XML / HTML標簽,例如
<tag></tag>
\\\\1
表示與第一個匹配組匹配,即括號中的東西。 (雙反斜杠是因為需要在Java字符串文字中對反斜杠進行轉義。)
我認為您可能誤解了本教程。 ()
中的任何內容都是集合,因此(\\w{1})(\\w{1})
意味着您有2個集合,每個集合中有1個字符。 \\1
,參考第一組。 因此,在搜索和替換中更像是這樣:
"1234234234234".replaceAll("(23)", "\\1ab")
結果為"123ab423ab423ab..."
, \\1
將返回您在第一組中匹配的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.