2016-08-01 32 views
4

我卡在RegEx(POSIX)。正则表达式的具体数字,忽略其他数字

我想从我的文本中提取特定数字,并忽略其他数字。

例如。我对'55'感兴趣,但想忽略2055,555,0550等。

令人沮丧的是,我无法可靠地说出数字的开头或结尾,例如,如果'55','55','55','55'等未知,我只能假定只是一个数字(或者根本没有)。

谢谢!

+0

喜欢的东西:'^ [^ \ d] * 55^\ d] * $'? – pah

+1

边界字符可以帮助'\ b55 \ b'。这里是一个讨论,包括数字搜索作为你的例子http://www.regular-expressions.info/wordboundaries.html –

回答

3

正则表达式中有一个功能,您可以将搜索字符串限制为该字符串和该字符串。

为此,您必须预先加上\ <并将\>附加到您正在搜索的字符串中。

就你而言,你可以使用\ < 55 \>作为搜索字符串。

您需要包含反斜杠。

+1

我从来没有见过这个。你有没有参考这个地方? (PS:这些是反斜杠) – CollinD

+0

从Pierre Lafortune上面提供的同一链接中,滚动到它在“GNU Word Boundaries”一节中描述此用法的底部。 也感谢证明阅读帮助! –

+0

那么这是相当当然neato。谢谢! – CollinD

2
^(.*[^\d])?55([^\d].*)?$ 

这将接受任何具有55的东西,使得55不与任何其他数字相邻。例如,它会接受:

1: 55 

但不是

Num: 556 

这种方式有可能在该行其他数字,只是只要数55本身存在某处。

1

你可以使用负向后看和负前瞻像这样

(?<!\d)(55)(?!\d) 

Demo
说明:

(?<!   # Negative Look-Behind 
    \d   # <digit 0-9> 
)    # End of Negative Look-Behind 
(    # Capturing Group (1) 
    55   # "55" 
)    # End of Capturing Group (1) 
(?!    # Negative Look-Ahead 
    \d   # <digit 0-9> 
)    # End of Negative Look-Ahead