2012-04-13 51 views
-2

什麼是蟒蛇。可有人字邊界請實例來說明此,什麼是單詞邊界,同時使用正則表達式在Python

舉例:1

>>> x = '456one two three123' 
>>> y=re.search(r"\btwo\b",x) 
>>> y 
<_sre.SRE_Match object at 0x2aaaaab47d30> 

舉例:2

>>> y=re.search(r"two",x) 
>>> y 
<_sre.SRE_Match object at 0x2aaaaab47d30> 

示例3:

>>> ip="192.168.254.1234" 
>>> if re.search(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip): 
... print ip 
... 

Exa mple4:

>>> ip="192.168.254.1234" 
>>> if re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip): 
... print ip 
192.168.254.1234 
+1

該文檔有答案:http://docs.python.org/library/re.html#regular-expression-syntax – 2012-04-13 08:58:19

+1

而不是我們解釋如何四個例子工作,爲什麼你不問你是什麼不明白?例如,你期待什麼,然後出現什麼? – 2012-04-13 08:58:22

+0

我想知道爲什麼\ b是必需的....如果我沒有給出每個評論你沒有嘗試的例子,如果我舉例說明一些人問「你爲什麼不問你什麼?理解?」 :)分佈式的人在看帖子:) – Rajeev 2012-04-13 09:08:33

回答

6

「字邊界」的意思正是它所說的:一個字的boundary,即開始或結束。

它與輸入中的任何實際字符都不匹配,但只有在當前匹配位置位於該單詞的開頭或結尾時才匹配。

這很重要,因爲不同於只匹配空格,它也會匹配整個輸入的開頭或結尾。

所以'\bfoo'將匹配'foobar''foo bar''bar foo',但不'barfoo'

'foo\b'將匹配'foo bar''bar foo''barfoo',但不匹配'foobar'

+1

請注意,在這些例子中,匹配的結果將始終只包含例如「foo」。 '富酒吧'等。只是爲了說清楚。 – HWende 2012-04-13 09:21:19

+0

是的。另外,「匹配」實際上並不精確,因爲您不得不使用're.search'來獲得不以'foo'開頭的字符串的正確結果。 – 2012-04-13 09:26:28

+0

感謝您的回答很好.... – Rajeev 2012-04-13 09:28:44

1

試試這個:

ip="192.168.254.1234" 
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip) 
print(res) 

通知我如何正確逃脫點。 找到了ip是因爲正則表達式不關心最後1-3位數字後面的內容。

現在:

ip="192.168.254.1234" 
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip) 
print(res) 

這是行不通的,因爲最後的1-3位不會終結在邊界。

+0

匹配點是一個編輯錯誤請不要介意。我現在糾正它 – Rajeev 2012-04-13 09:17:14

相關問題