2016-08-01 81 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