1

私はそれについて約3時間検索してきましたが、今は立ち往生しています。問題は次のとおりです。

4. と 6. の文字だけが同じである 7 文字の単語を見つけたい

お気に入り:

^...(.).\1.$

でも見つけたくない

aaaBaBa

他のすべての文字は、次のように互いに異なる必要があります。

asdBfBg

私の質問は次のようなものです: Java: 各文字が 0-1 回出現する正規表現

しかし、ルックアラウンド(?<= および (?=, (?

4

2 に答える 2

1

これは機能するものですが、これを行うためのより良い方法があるかもしれません。

/
\b # word boundary
(\w) # any word char
(?!\1)(\w) # any word char except \1
(?!\1|\2)(\w) # any word char except \1 or \2
(?!\1|\2|\3)(\w) # etc...
(?!\1|\2|\3|\4)(\w)
\4 # 4th capture
(?!\1|\2|\3|\4\5)(\w)
\b # word boundary
/x
于 2013-08-21T01:14:05.907 に答える
1

おそらく、次のように否定的なアサーションを使用できます。

^(.)(.)(.)(.)(.)\4(.)(?<!(?:\1.*\1|\2.*\2|\3.*\3|\4.*\4.*\4|\5.*\5|\6.*\6).*)$

これにより、4 番目と 6 番目の文字が同じで、1 番目、2 番目、3 番目、5 番目、または 7 番目の\6文字 ( ) が 2 回出現せず、4 番目の文字が 3 回繰り返されていない 7 文字の単語が検索されます。

于 2013-08-21T00:55:29.347 に答える