正则表达式匹配包含任意字符中的两个但不包含三个的字符串

Regex to match strings containing two of any character but not three

我希望正则表达式匹配包含相同字符的字符串两次(不一定连续),但如果该字符出现三次或更多次则不匹配。

例如,给定这两个输入:

abcbde
abcbdb

第一个 abcbde 会匹配,因为它包含两次 b。但是,abcbdb 包含三次 b,因此不匹配。

我创建了这个正则表达式,但它同时匹配:

(\w).*{1}

我也尝试过使用 ? 修饰符,但它仍然匹配 abcbdb,我不希望它匹配。

您需要进行两次检查:第一次检查以确保输入中的字符不存在 3 次,第二次检查以查找存在 2 次的字符:

^(?!.*(\w).*.*).*?(\w).*

与使用您的编程语言构建字符频率数组相比,这效率低得可怕,整个输入只需要 1 次。但它有效。