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

Ben*_* S. 3 regex

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

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

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

grep 'num=[2-9][0-9]*;'
Run Code Online (Sandbox Code Playgroud)

我认为,下一个表达式应该返回任何以1开头的数字,这个数字有两个或更多数字,但我没有得到任何回复:

grep 'num=1[0-9]+;'
Run Code Online (Sandbox Code Playgroud)

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

Cas*_*yte 5

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

grep 'num=1[0-9]\+;'
Run Code Online (Sandbox Code Playgroud)

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

grep 'num=\([2-9]\|1[0-9]\)[0-9]*;'
Run Code Online (Sandbox Code Playgroud)