我试图匹配与第二个字母重复相同字母的单词,结束字符和中间1次,我需要捕获第二个字母并匹配整行。
单词示例
syzygy
error
banana
我试过
^[a-z]([a-z])[a-z]+[a-z]+\1$
这匹配线并捕获我的第二个字母,但我需要确保重复第二个字母
s(y)z y <-same as second character g y <- ends in same character
所以我需要确保在一个字符串中y位于第二个位置,中间有一次,并且字符串结束
答案 0 :(得分:1)
如果我理解你正确使用负向前看,你可以做到这一点。
^.(.)(?:(?!\1).)*\1(?:(?!\1).)*\1$
点.
匹配任何单个字符,但换行符除外。通过使用\1
,我们引用第一个捕获组中保存的匹配。
请参阅regular expression explanation
请参阅捕获第二个字符并匹配整个字符串的live demo。
请参阅live demo \1
如何匹配重复字符。
答案 1 :(得分:1)
# ^[a-z]([a-z])[a-z]*\1[a-z]*\1$
^
[a-z]
( [a-z] ) # (1), Second letter
[a-z]*
\1 # A Backref to second letter in the middle
[a-z]*
\1 # A Backref to second letter at the end
$
答案 2 :(得分:1)
您可以使用此正则表达式:
^.(.).*?\1.*?\1$