我发现这个家庭作业表达式将“打印包含元音(a、e、i、o 或 u)的所有行,后跟单个字符,后跟相同的元音。因此,它将找到“eve”或“亚当”,但不是“维拉”。”该表达式工作正常,但我正在寻找可以解释每个部分的作用的人,以便我可以进一步理解它是如何工作的。
答案1
首先,谷歌搜索正则表达式网站。他们会给你很多帮助。例如,尝试 regexone。
其次,要测试或帮助理解正则表达式,请参阅 regex101.com - 这对您有很大帮助,因为它一步步解释了发生的情况;您还可以测试正则表达式。
现在说到表达:
[aeiou]
匹配括号中的任何字符(此处:a、e、i、o 或 u)。
.
匹配任何单个字符
\1
匹配第一个捕获组。
\(anything\)
是一个捕获组。
捕获组是您可以记住以供以后使用的字符串的名称。在这种情况下,捕获 [aeiou] 中的任何字符可以让我们记住我们匹配的内容。如果我们改写这个正则表达式:
[aeiou].[aeiou]
我们无法检查第一个和第二个元音是否相同。
因此,您的正则表达式意味着“匹配“aeiou”中的任何字符,然后匹配任何单个字符,然后匹配第一个字符”。
答案2
首先,\(
和\)
。这意味着“这些转义括号内的任何内容都是一个组,并且可以在表达式中稍后引用”。其中有[aeiou]
,这意味着“任何字符a
, e
, i
, o
, 或u
”。单点.
表示“任何单个字符”。意思\1
是“你在第一组匹配时发现的东西”。