正则表达式:加号不做我所期望的



我有一个文件,有很多行,包括一个像这样的字符串:blah blahnum=12345; blah blah

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

我从这个表达式开始,它将匹配任何以非1的数字开头的数字,它工作得很好,我理解它。

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

下一个表达式应该,我想,返回任何以1开头的有两个或两个以上数字的数字,但是我没有返回任何东西:

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

我认为上面的意思是:必须匹配num=1,然后必须匹配0-9之间的数一次或多次,然后必须匹配;。我哪里做错了?

使用grep必须转义+量词

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

对于你的问题,你可以使用这个(对于所有数字>1,如果我理解得好):

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

最新更新