2

同じ文字が 2 番目の文字、末尾の文字、途中で 1 回繰り返される単語を一致させようとしています。2 番目の文字をキャプチャして、行全体を一致させる必要があります。

言葉の例

syzygy
error
banana

やってみた

^[a-z]([a-z])[a-z]+[a-z]+\1$

これは行と一致し、私の2番目の文字をキャプチャしますが、2番目の文字が繰り返されることを確認する必要があります

 s(y)z y <-same as second character g y <- ends in same character

そのため、y が 2 番目の位置にあり、途中で 1 回、文字列の終わりであることを文字列で確認する必要があります。

4

3 に答える 3

1

次の正規表現を使用できます。

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

これを行う 1 つの方法は、否定的な先読みを使用することです。

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

ドット.は、改行文字を除く任意の 1 文字に一致します。を使用\1して、最初のキャプチャ グループに保存された一致を参照します。

正規表現の説明を見る

2 番目の文字をキャプチャして文字列全体を照合するライブ デモをご覧ください。

がどのように繰り返される文字を一致させるかのライブ デモを参照してください。\1

于 2013-10-06T16:21:09.560 に答える
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 に答える