-1

获取文件的以下内容:

“52245”
“528”
“06156903”
“52246”
“530”
“00584709”

什么模式可以同时匹配 52245 和 52246 但不匹配?

4

3 回答 3

17

只能匹配这两个数字而没有别的东西:

^\"5224[56]\"$

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

^\"\d{5}\"$

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

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

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

或从评论中获取建议:

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

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

于 2009-04-23T16:59:14.753 回答
11
^(52245|52246)$

你可以使用这个。

于 2009-04-23T16:59:09.357 回答
7
^"5224[56]"$

^"5224(5|6)"$

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

^"(52245|52246)"$

...

You should base the regex you use on the semantic you want to express. If you are looking for two arbitrary numbers use ^"(52245|52246)"$. If the numbers have any meaning - a type code or something like that - I would stick with ^"5224(5|6)"$.

于 2009-04-23T17:01:21.207 回答