正则表达式 - 在BOL或EOL中查找数字,但也不会嵌入其他数字或文本中

时间:2017-04-14 16:26:35

标签: regex

我想找到' 106'。但它不能像21067那样处于更长的数字,也不能像y106M这样的文本字符串。但我也希望找到它,如果它在开头,或行尾,或者它是行。

所以这些行已经出局了:

106M
1106
106in a string is bad even if it starts the line
And it may finish with the target but not as the tail of a string106

但这些是:

106 something else
another 106
And of couse "106' will work as well
I just want 106 to show up but not embedded in other numbers or text
but it's OK is the end of the line is 106
106 may also start the line

我尝试了以下搜索字符串及其中的许多变体:

  

(^ | [^ 0-9A-ZA-Z])106($ | [^ 0-9A-ZA-Z])

我是正则表达式的新手,我可能无法掌握锚字符的工作方式。

1 个答案:

答案 0 :(得分:2)

您可以使用\b字边界断言:

\b106\b

Demo

或者更具体地使用lookarounds

(?<=^|\W)106(?=$|\W)

Demo

或者,正如评论中指出的,(?<!\w)106(?!\w)也有效。或(?<=[^a-zA-Z0-9])106(?=[^a-zA-Z0-9])工作得更好,因为_\w字符集中包含\W