2

我正在尝试匹配与第二个字母、结束字符和中间重复 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 在第二个位置,在中间 1 次,并且在字符串的结尾

4

3 回答 3

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
 $
于 2013-10-06T16:31:13.103 回答
1

如果我理解正确的话,你可以做到这一点的一种方法是使用负面展望

^.(.)(?:(?!\1).)*\1(?:(?!\1).)*\1$

.匹配任何单个字符,换行符除外。通过使用\1,我们引用了保存在第一个捕获组中的匹配项。

正则表达式解释

查看捕获第二个字符并匹配整个字符串的现场演示。

查看如何匹配重复字符的现场演示。\1

于 2013-10-06T16:21:09.560 回答
1

您可以使用此正则表达式:

^.(.).*?\1.*?\1$
于 2013-10-06T16:39:21.367 回答