如何重复找到包含所有指定字符的单词?

时间:2012-10-29 14:26:03

标签: regex

有没有办法找到包含所有给定字符的单词,包括重复的单词,正则表达式?例如,我想查找列表中的所有单词

aabc, abbc, bbbc, aaac, aaab, baac, caab, abca

只包含一个'b'和两个'a',即aabcbaaccaababca(但不是aaab因为它还有一个'a')。字长无关紧要。

虽然这个问题

GREP How do I only retrieve words with only the specified letters?

可以给我一些提示,我无法扩展它以便找到重复的字符。

我只是在玩Python的re模块,但是没有关于该问题的语言/工具的重新解释。

编辑:

更好的示例/用例将是:给定单词列表,仅显示包含用户输入的所有字母的单词,例如,我想找到所有包含一个'a',两个's'和一个's'的单词。这是正则表达式的能力吗? (我已经知道如何在没有正则表达式的情况下完成它。)

2 个答案:

答案 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]*$)^.+$

Here is a live demo for you