正则表达式匹配两个数字,但没有别的

时间:2009-04-23 16:57:45

标签: regex grep

获取文件的以下内容:

"52245"
"528"
"06156903"
"52246"
"530"
"00584709"

什么模式可以匹配52245和52246,但没有别的?

3 个答案:

答案 0 :(得分:17)

只能匹配这两个数字的东西:

^\"5224[56]\"$

现在,如果你正在寻找更通用的东西(例如,任何5位数的数字),你会想要像

这样的东西
^\"\d{5}\"$

我假设引号(")是文件的一部分。如果不是,请忽略表达式中的\"部分。

您想要的特定grep表达式是:

grep -E "^\"[[:digit:]]{5}\"$" filename

或从意见中提出建议:

grep -P "^\"\d{5}\"$" filename

我已经测试了两个,他们在我的机器上工作!

答案 1 :(得分:11)

^(52245|52246)$

你可以使用它。

答案 2 :(得分:7)

^"5224[56]"$

^"5224(5|6)"$

^"52{2}4[56]"$

^"(52245|52246)"$

...

您应该将您使用的正则表达式基于您想要表达的语义。如果您要查找两个任意数字,请使用^"(52245|52246)"$。如果数字有任何意义 - 类型代码或类似代码 - 我会坚持使用^"5224(5|6)"$