re.compile("a[b|c]d").findall("akjh adc abc abbd acd")
爲什麼這隻簡單的正則表達式,爲什麼這不起作用?
['acd']
不
['abd', 'acd']
返回?
編輯:
我給了錯誤的榜樣......這就是原因。可刪除帖子..
re.compile("a[b|c]d").findall("akjh adc abc abbd acd")
爲什麼這隻簡單的正則表達式,爲什麼這不起作用?
['acd']
不
['abd', 'acd']
返回?
編輯:
我給了錯誤的榜樣......這就是原因。可刪除帖子..
你的正則表達式匹配任何字符串開頭a
,與d
和結尾無論是b
,一個|
或c
。
如果您正在尋找有一張b
或a
和d
之間的c
,你用方括號沒有管(a[bc]d
)或您使用括號與管道(a(b|c)d
)。方括號表示任意之間的字符被接受一次(包括|
);圓括號表示任何以|
分隔的正則表達式都被接受 - 在這種情況下,您將有兩個正則表達式,其中一個匹配b
,另一個匹配c
。
我發現第一個選項是最好的選擇。但是,這些正則表達式不會以任何方式匹配abc
。有很多正則表達式可以匹配兩個字符串,例如a[bc][cd]
或(對我來說更有意義)a(bc|cd)
。
HTH。
正則表達式將匹配以a開頭的字符串,接着是b或c,然後是d。那就是:
'ABD'
或
'ACD'
你不需要管在字符類
re.compile("a[bc]d").findall("akjh adc abc abbd acd")
模式說,搜索a
,然後b
或c
(即任何字符類),然後d
。所以正則表達式只返回1個發現。
爲什麼會返回'abc'? – 2011-04-13 12:52:56
對不起,愚蠢的錯誤...呃... – noisy 2011-04-13 12:55:25
該字符串不包含'abd' – iamserious 2011-04-13 13:07:32