我正在使用数字 1,2,3 生成字符串 10个字符长的所有可能排列。
我现在想查看有多少字符串的数字 1 3 次, 2 2 次和 3 5次次
如果我使用egrep,那么正确的正则表达式是什么?
答案 0 :(得分:3)
您可以使用positive lookaheads:
(?=(.*1){3})(?=(.*2){2})(?=(.*3){5})^.{10}$
但请注意,这不是使用正则表达式解决的完美任务。
<小时/> 编辑:由于您说您使用的是
egrep
,因此您可以改用管道:
echo 3121233133 | egrep '(.*1){3}' | egrep '(.*2){2}'| egrep '(.*3){5}' | egrep '^.{10}$'
答案 1 :(得分:1)
这比正则表达式更快:
input.replace("1", "").length === input.length - 3 &&
input.replace("2", "").length === input.length - 2 &&
input.replace("3", "").length === input.length - 5;