我發現這個家庭作業表達式將“打印所有包含元音(a、e、i、o或u)的行,後跟單個字符,後跟相同的元音。因此,它將找到“eve”或“亞當”,但不是“維拉”。”該表達式工作正常,但我正在尋找可以解釋每個部分的作用的人,以便我可以進一步理解它是如何工作的。
答案1
首先,Google搜尋正規表示式網站。他們會給你很多幫助。例如,嘗試 regexone。
其次,要測試或幫助理解正規表示式,請參閱 regex101.com - 這對您有很大幫助,因為它一步步解釋了發生的情況;您也可以測試正規表示式。
現在說到表達:
[aeiou]
匹配括號中的任何字元(此處:a、e、i、o 或 u)。
.
匹配任何單一字符
\1
匹配第一個捕獲組。
\(anything\)
是一個捕獲組。
捕獲組是您可以記住以供以後使用的字串的名稱。在這種情況下,捕獲 [aeiou] 中的任何字元可以讓我們記住我們匹配的內容。如果我們改寫這個正規表示式:
[aeiou].[aeiou]
我們無法檢查第一個和第二個元音是否相同。
因此,您的正規表示式意味著“匹配“aeiou”中的任何字符,然後匹配任何單個字符,然後匹配第一個字符”。
答案2
首先,\(
和\)
。這意味著「這些轉義括號內的任何內容都是一個群組,並且可以在表達式中稍後引用」。其中有[aeiou]
,這意味著「任何字元a
, e
, i
, o
, 或u
」。單點.
表示“任何單一字元”。意思\1
是「你在第一組配對時發現的東西」。