我在文件中有这样的记录:
A 20 year old programmer
A 52 year old politician
A 12 year old practitioner
Many many more of these...
我只想匹配数字少于20
的行。我尝试过:
^[0-20]{2}$
但是它仅适用于数字0-2
。如何构造正则表达式以匹配数字< 20
?例如,它应该匹配:
A 12 year old practitioner
但不是
A 20 year old programmer
A 52 year old politician
答案 0 :(得分:3)
您可以使用
\b1?[0-9]\b
请参见regex demo
详细信息
\b
-单词边界(?:1?[0-9])
-可选的1
及其后的任何数字\b
-单词边界单词边界变化
要匹配字符串中的任何位置(即使粘在单词上):
(?<!\d)1?[0-9](?!\d)
仅在空白之间匹配:
(?<!\S)1?[0-9](?!\S)
答案 1 :(得分:1)
使用正则表达式来匹配数字范围通常有点笨拙,但是在这里,您可以使用以下命令很简单地做到这一点:
\b1?\d\b
https://regex101.com/r/YCWmNo/2
以简单的语言表示:可选的一种,后跟一个数字。因此,允许使用任何独立的数字,但是两位数字需要其第一位为1。
如果要允许前导零,请更改为\b[01]?\d\b
。