誰能幫我解釋一下這個表達方式嗎? grep '\([aeiou]\).\1'

誰能幫我解釋一下這個表達方式嗎? grep '\([aeiou]\).\1'

我發現這個家庭作業表達式將“打印所有包含元音(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是「你在第一組配對時發現的東西」。

相關內容