我得到它在更高級別上的功能......它檢測到重複的單詞。我難以理解的是這種工作方式的邏輯。我希望你能糾正我,如果我的理解是關閉的。其他細節假設我在Linux機器上使用grep。不知道我是否理解正則表達式:( b w +) 1 b?
- \ b將檢測到第一個字符。
- \ w +會掃描字母。
現在我對此感到困惑。
- 括號將「店」的字母到第一空間或真第二\ b
- 那麼/ 1將重複步驟1到3,然後比較,並且如果他們匹配...顯示。
如果可能的話,我將不勝感激外行人的條款。
我得到它在更高級別上的功能......它檢測到重複的單詞。我難以理解的是這種工作方式的邏輯。我希望你能糾正我,如果我的理解是關閉的。其他細節假設我在Linux機器上使用grep。不知道我是否理解正則表達式:( b w +) 1 b?
現在我對此感到困惑。
如果可能的話,我將不勝感激外行人的條款。
(\b\w+) \1\b
發現檢測重複話。例如,abc abc
或aaa aaa
或x123_ x123_
。
一個單詞是單詞字符的一個序列,如下定義。
A 單詞字符取決於模式(ASCII,區域設置或Unicode)將匹配字母表(可以取決於語言環境),數字(可以取決於語言環境)和下劃線。
\b
檢測單詞邊界,這是在那裏你可以之前或之後(但不能同時)找到字字符的位置。
上面的正則表達式有一個小缺陷。如果單詞重複3次以上,它只會去掉一半的重複的單詞,用捕捉組1
\ 1是反向引用,意味着它與最後一個捕獲組匹配。 在這種情況下,\ b \ w是捕獲組,因此\ 1匹配上次捕獲的組。
更多關於反向引用可以在這裏 http://www.regular-expressions.info/backref.html
* \ 1場比賽最後拍攝組*它是正確的嗎? – Braj 2014-10-10 04:21:09
我的意思是第一個被捕獲的組。在這種情況下,最後一個字。 – 2014-10-10 04:29:58
當更換模式說明:
( group and capture to \1:
\b the word boundary
\w+ word characters (a-z, A-Z, 0-9, _) (1 or more times)
) end of \1
' '
\1 what was matched by capture \1
\b the word boundary
如果您正在使用\w
捕獲AZ, AZ,0-9,_因此,您不需要指定用於字邊界的第一個\b
。
\1
是與第一組匹配的反向引用。
這裏括號(...)
用於製作組。
(\b\w+) \1\b
First Group ------^^^^^^ ^-------- Match First Group again
考慮在第二部分之前添加空格。 – 2014-10-10 04:05:50
行了。標題中的空間不是很明顯。 – nhahtdh 2014-10-10 04:08:44
+1對於很好的解釋。 – Braj 2014-10-10 04:19:06