我知道[]
表示一組允許的字符 -正則表達式匹配中的b/w [ab]和(a | b)的差異?
>>> p = r'^[ab]$'
>>>
>>> re.search(p, '')
>>> re.search(p, 'a')
<_sre.SRE_Match object at 0x1004823d8>
>>> re.search(p, 'b')
<_sre.SRE_Match object at 0x100482370>
>>> re.search(p, 'ab')
>>> re.search(p, 'ba')
但是......今天我碰到與括號內豎線的表達式來定義互斥模式 -
>>> q = r'^(a|b)$'
>>>
>>> re.search(q, '')
>>> re.search(q, 'a')
<_sre.SRE_Match object at 0x100498dc8>
>>> re.search(q, 'b')
<_sre.SRE_Match object at 0x100498e40>
>>> re.search(q, 'ab')
>>> re.search(q, 'ba')
這似乎模仿與上述相同的功能,還是我錯過了某些東西?
PS:在Python
括號本身用於定義匹配文本的邏輯組。如果我使用第二種技術,那麼如何在兩個作業中使用括號?
不知道你的意思是用括號位什麼... – 2011-07-10 07:30:22
是的,你是正確的 - '[AB]'和'(一| b)'完全相同(但第一個匹配更快)。正則表達式本身就是一種語言(無論你是用Python還是Perl發現它們),如果你打算有效地使用它們,你需要學習它們(神祕)的語法。 (例如正則表達式中的圓括號與正則表達式外的圓括號不同。)我建議遵循[regular-expressions.info](http://www.regular-expressions.info)上的教程。任何時間花在那裏都會得到多次獎勵。 – ridgerunner