正则表达式:加号不符合我的预期

时间:2013-06-19 01:12:26

标签: regex

我有一个包含许多行的文件,包括这样的字符串:blah blah num = 12345; blah blah

我想找到等号后面的数字大于1的行,没有上限。 (我不希望数字从零开始。)

我从这个表达式开始,它将匹配以任何不是1的数字开头的任何数字,并且它工作正常,我理解它。

grep 'num=[2-9][0-9]*;'

我认为,下一个表达式 应该返回任何带有两个或更多数字的1开头的数字,但我什么也得不回来:

grep 'num=1[0-9]+;'

我虽然上述意思是:必须匹配 num = 1 ,然后必须匹配0到9之间的一次或多次,然后必须匹配; 。我哪里错了?

1 个答案:

答案 0 :(得分:5)

使用grep,你必须转义+量词

grep 'num=1[0-9]\+;'

对于您的问题,您可以使用此功能(对于所有数字> 1,如果我理解的话):

grep 'num=\([2-9]\|1[0-9]\)[0-9]*;'