Regex 使用正则表达式匹配具有给定直方图的字符串(某些字符以任意顺序出现的次数)

Regex 使用正则表达式匹配具有给定直方图的字符串(某些字符以任意顺序出现的次数),regex,grep,Regex,Grep,是否可以使用正则表达式来匹配某些字符出现次数一定的字符串 例如,我想找到所有有1个“a”和2个“l”的单词。所以下面的词应该匹配:全部,允许,高,托盘,责任 下面的示例将只找到顺序为1'a'和2'l'的模式,而不是字符串上的任何顺序和位置 echo -e "all\nallow\ntall\npallet\nliability" | grep 'a\{1\}l\{2\}' 在具有无限前视功能的发动机上,这应该是可行的: (?=[^a]*a)(?=[^l]*l[^l]*l).* 说明: (?=

是否可以使用正则表达式来匹配某些字符出现次数一定的字符串

例如,我想找到所有有1个“a”和2个“l”的单词。所以下面的词应该匹配:全部,允许,高,托盘,责任

下面的示例将只找到顺序为1'a'和2'l'的模式,而不是字符串上的任何顺序和位置

echo -e "all\nallow\ntall\npallet\nliability" | grep 'a\{1\}l\{2\}'

在具有无限前视功能的发动机上,这应该是可行的:

(?=[^a]*a)(?=[^l]*l[^l]*l).*
说明:

(?=[^a]*a)
如果字符串中没有
a
,则失败

echo -e "all\nallow\ntall\npallet\nliability" | grep 'a\{1\}l\{2\}'
(?=[^l]*l[^l]*l)
如果字符串中没有2
l
,则失败

echo -e "all\nallow\ntall\npallet\nliability" | grep 'a\{1\}l\{2\}'
*
与实际字符串匹配


但是我不确定grep是否支持这一点。

Regex在这方面不是特别擅长。您最好使用其他工具。在提供用于比较的示例输入时,提供一些匹配的示例和一些不匹配的示例更有用。如果您只提供匹配的输入,那么测试
的脚本将产生预期的输出,因此对于测试潜在的解决方案是没有用的。