正则表达式:找到给定字符串附近的数字

Gui*_*ido 0 java regex

我试图找到一种很好的方法来捕获一个距离给定字符串不超过N个字符的数字.

例如,如果字符串是"年龄"并且必须找到N = 4

"Age 5" => 5
"My age is 10 and I my name is John" => 10
"My age is almost 5 and I my name is Mary" => null
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,该数字与"年龄"分开超过4个字符.

Joh*_*iss 5

关于什么

age[^0-9]{0,4}[0-9]+
Run Code Online (Sandbox Code Playgroud)

如果你想捕获可能找到的数字:

age[^0-9]{0,4}([0-9]+)
Run Code Online (Sandbox Code Playgroud)