1

我已经搜索了大约 3 个小时,现在我被卡住了。这是问题所在:

我想找到 7 个字符的单词,其中只有4 个和 6 个字符是相同的

喜欢:

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

但我不想找到

aaaBaBa

所有其他字符必须彼此不同,例如:

asdBfBg

我的问题与此类似:Java:每个字符出现 0-1 次的正则表达式

但我的知识不足以使用Lookarounds (?<= 和 (?=, (?

4

2 回答 2

1

也许您可以使用否定断言,如下所示:

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

这将找到任何第 4 和第 6 个字母相同且第 1、2、3、5 或 7 个 ( \6) 字母不出现两次且第 4 个字母不重复 3 次的 7 字母单词。

于 2013-08-21T00:55:29.347 回答
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 回答