匹配具有相同字母的单词

时间:2013-10-06 16:10:46

标签: regex

我试图匹配与第二个字母重复相同字母的单词,结束字符和中间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位于第二个位置,中间有一次,并且字符串结束

3 个答案:

答案 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$