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

-1 regex grep

获取文件的以下内容:

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

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

Wel*_*bog 17

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

^\"5224[56]\"$
Run Code Online (Sandbox Code Playgroud)

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

^\"\d{5}\"$
Run Code Online (Sandbox Code Playgroud)

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

你想要的特定grep表达式是这样的:

grep -E "^\"[[:digit:]]{5}\"$" filename
Run Code Online (Sandbox Code Playgroud)

或者从评论中提出建议:

grep -P "^\"\d{5}\"$" filename
Run Code Online (Sandbox Code Playgroud)

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


Bri*_*uch 11

^(52245|52246)$
Run Code Online (Sandbox Code Playgroud)

你可以用它.


Dan*_*ner 7

^"5224[56]"$

^"5224(5|6)"$

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

^"(52245|52246)"$

...
Run Code Online (Sandbox Code Playgroud)

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