有没有办法找到包含所有给定字符的单词,包括重复的单词,正则表达式?例如,我想查找列表中的所有单词
aabc, abbc, bbbc, aaac, aaab, baac, caab, abca
只包含一个'b'和两个'a',即aabc
,baac
,caab
和abca
(但不是aaab
因为它还有一个'a')。字长无关紧要。
虽然这个问题
GREP How do I only retrieve words with only the specified letters?
可以给我一些提示,我无法扩展它以便找到重复的字符。
我只是在玩Python的re模块,但是没有关于该问题的语言/工具的重新解释。
编辑:
更好的示例/用例将是:给定单词列表,仅显示包含用户输入的所有字母的单词,例如,我想找到所有包含一个'a',两个's'和一个's'的单词。这是正则表达式的能力吗? (我已经知道如何在没有正则表达式的情况下完成它。)
答案 0 :(得分:0)
如果你的正则表达式支持前瞻,那么你可以使用它:
\b(?=.*b)(?=([^a]*a){2}[^a]*\b)[abc]+\b
这需要至少一个b和正好2个a,并且只允许字符串中的a,b和c。如果您只想要一个b和4个字符,请使用:
\b(?=[^b]*b[^b]*\b)(?=([^a]*a){2}[^a]*\b)[abc]{4}\b
答案 1 :(得分:0)
要在输入字符串中准确匹配2 a和1 b(以任何顺序),请使用此正则表达式:
(?=^(?:[^a]*a){2}[^a]*$)(?=^[^b]*b[^b]*$)^.+$