我有两个正则表达式很难理解。下面是两个表达式,后面是我认为正确的表达式。我不确定这些表达式是 RE 还是 ERE。
^\([a-z]\)\1
在行首搜索从 a 到 z 的任何小写字母并匹配一次出现的情况。
^.*\([a-z]*\).*\1.*\1
在行首搜索任何单个字符,后跟零个或多个小写字母 a 到 z,后跟任何单个字符,然后后跟任意两个附加“任意”字符或不包含任何字符
最佳答案
您的第一个正则表达式无效,因为它具有不匹配的 \(
假设您的意思是 ^\([a-z]\)\1
您有以下内容
^ Match at start of line
\([a-z]\) Match a lower case letter and put it into capture buffer 1
\1 Match what is in capture buffer 1
更简单地匹配以相同的两个小写字符开头的任何行
对于 ^.*\([a-z]*\).*\1.*\1
^ Match at start of line
.* Match 0 or more characters
\([a-z]*\) Match a lower case letter 0 or more times and place in capture buffer 1
.* Match 0 or more characters
\1 Match what is in capture buffer 1
.* Match 0 or more characters
\1 Match what is in capture buffer 1
我怀疑这是试图匹配包含任意小写字母序列三次或多次的行。然而,它写得不好,将匹配任何行,因为 \([a-z]*\)
可以匹配空字符串,如果第一个字符之前的行,则该空字符串与正则表达式的其余部分可以匹配开头的整个正则表达式。要解决此问题,您需要将 \([a-z]*\)
更改为 \([a-z][a-z]*\)
。 IE。确保您至少捕获一个小写字母。
关于regex - 理解正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52604231/