許願把一些訂單到我的正則表達式,我決定一本書去了解他們,介紹正則表達式的知識。而且我知道這很愚蠢,但其中一個介紹性例子對我沒有意義。很難理解捕獲組和反向引用
(\d)\d\1
示例文本:
123-456-7890
(應該捕獲的第一個數字,123
)
誰能解釋什麼是怎麼回事?
據我所知,第一個\d
捕獲數字123.該\1
反向引用(標記)該組以備後用。括號限制了組的範圍。但第二個\d
做什麼?
簡單的解釋,就像一個小的孩子或金毛獵犬者優先。
許願把一些訂單到我的正則表達式,我決定一本書去了解他們,介紹正則表達式的知識。而且我知道這很愚蠢,但其中一個介紹性例子對我沒有意義。很難理解捕獲組和反向引用
(\d)\d\1
示例文本:
123-456-7890
(應該捕獲的第一個數字,123
)
誰能解釋什麼是怎麼回事?
據我所知,第一個\d
捕獲數字123.該\1
反向引用(標記)該組以備後用。括號限制了組的範圍。但第二個\d
做什麼?
簡單的解釋,就像一個小的孩子或金毛獵犬者優先。
\d
只是一個數字。
這個正則表達式不匹配"123-456-7890"
字符串,但它會匹配"323"
(這可能是一個更大的字符串的一部分,例如"323-456-7890"
):現在
(\d) : first digit ("3")
\d : another digit ("2")
\1 : first group (which was "3")
,如果你的書假裝(\d)\d\1
應捕捉"123"
在"123-456-7890"
,那麼它可能包含一個錯誤......一步
(\d)\d\1
步:
\d
匹配一個數字()
馬克此作爲捕獲組 - 這是第一個,所以該數字將被記住,「組1」\d
說,有另一個數字\1
說:「這裏是我們的前一組值1」 - 這是在步驟相匹配的數字1所以像dystroy已經說了:正則表達式應該匹配的三個數字,其中一個序列第一和第三是相等的。
爲了真正理解正則表達式,請閱讀:[掌握正則表達式(第三版)](http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124)作者:Jeffrey Friedl。Best關於正則表達式 - 永遠!「) – ridgerunner
@ridgerunner - 我認爲在這個階段對我來說有點過於先進。也許,在未來的日子裏:) – Rook
實際上,MRE是以教程風格編寫的,從最基本的開始就從頭開始。手下來,我讀過的最有用的書。 – ridgerunner