使用正则表达式在字符串中的任何位置查找字符一定次数

时间:2015-12-12 22:04:47

标签: regex grep

我正在使用数字 1,2,3 生成字符串 10个字符长的所有可能排列。

我现在想查看有多少字符串的数字 1 3 次, 2 2 次和 3 5次

如果我使用egrep,那么正确的正则表达式是什么?

2 个答案:

答案 0 :(得分:3)

您可以使用positive lookaheads

(?=(.*1){3})(?=(.*2){2})(?=(.*3){5})^.{10}$

See it in action

但请注意,这不是使用正则表达式解决的完美任务。

<小时/> 编辑:由于您说您使用的是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;