3

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

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

正好包含一个'b'和两个'a',即,,,和aabc(但不是因为它有一个额外的'a')。字长无关紧要。baaccaababcaaaab

虽然这个问题

GREP 如何只检索仅包含指定字母的单词?

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

我只是在玩 Python 中的 re 模块,但是对于这个问题没有语言/工具的限制。

编辑:

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

4

2 回答 2

0

If your regex flavor supports lookaheads, then you can use this:

\b(?=.*b)(?=([^a]*a){2}[^a]*\b)[abc]+\b

This requires at least one b and exactly 2 a's, and allows only a, b and c in the string. If you want to require exactly one b and exactly 4 characters in total, use this:

\b(?=[^b]*b[^b]*\b)(?=([^a]*a){2}[^a]*\b)[abc]{4}\b
于 2012-10-29T14:41:18.343 回答
0

要完全匹配输入字符串中的 2 a 和 1 b(以任何顺序),请使用此正则表达式:

(?=^(?:[^a]*a){2}[^a]*$)(?=^[^b]*b[^b]*$)^.+$

这是给你的现场演示

于 2012-10-29T15:22:31.807 回答