我已经搜索了大约 3 个小时,现在我被卡住了。这是问题所在:
我想找到 7 个字符的单词,其中只有4 个和 6 个字符是相同的
喜欢:
^...(.).\1.$
但我不想找到
aaaBaBa
所有其他字符必须彼此不同,例如:
asdBfBg
我的问题与此类似:Java:每个字符出现 0-1 次的正则表达式
但我的知识不足以使用Lookarounds (?<= 和 (?=, (?
我已经搜索了大约 3 个小时,现在我被卡住了。这是问题所在:
我想找到 7 个字符的单词,其中只有4 个和 6 个字符是相同的
喜欢:
^...(.).\1.$
但我不想找到
aaaBaBa
所有其他字符必须彼此不同,例如:
asdBfBg
我的问题与此类似:Java:每个字符出现 0-1 次的正则表达式
但我的知识不足以使用Lookarounds (?<= 和 (?=, (?
也许您可以使用否定断言,如下所示:
^(.)(.)(.)(.)(.)\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 字母单词。
这是可行的方法,也许有更好的方法可以做到这一点。
/
\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