我想在python中使用re模塊來匹配特定的模式。 我希望匹配一個完整的句子(更準確地說,我會說他們是由空格和/或標點分隔的字母數字字符串序列)在Python中的正則表達式的混淆行爲
例如。
- 「這是一個普通的句子。」
- 「這也是有效的」
- 「等是這一」
我嘗試了正則表達式的各種組合,但我無法正確地掌握模式的工作,每個表達給我一個不同的但莫名其妙的結果(我承認我是初學者,但仍然)。
我嘗試:
「((\ w +)(\ S)?)*」
據我所知,這應該與一個或多個字母字母數字貪婪地跟着一個或沒有空白字符,然後它應該貪婪地匹配整個模式。這似乎並不是它所做的,很明顯我錯了,但我想知道爲什麼。 (我期望這會返回整個句子作爲結果) 我得到的第一個示例字符串的結果是[('句子','句子',''),('','','') ,('','',''),('','','')]。
「(\ w +?)*」
我什至不知道這應該如何工作。官方文檔(python幫助('re'))說,,+ ,?匹配前面RE的x或x(貪婪)重複。 在這種情況下,只是將前面的RE空間放在'?'或者是'\ w +'前面的RE?那麼''運營商的RE會是什麼?我得到的結果是['句子']。
其他如「(\ w + \ s?)+)」; 「((\ w *)(\ s ??))等等,這些基本上是相同想法的變化,即句子是一組阿爾法數字,然後是單個/有限數量的空白,並且這種模式被重複並且結束了。
誰能告訴我我走到哪裏錯了,爲什麼,爲什麼上面的表達式不工作,我被他們期待?
PS我終於方式「[\ w] +「來爲我工作,但是通過這個我不能限制連續空白字符的數量。
你使用're.findall()'? – 2012-07-06 23:35:13
你如何檢索結果?我假設你正在使用捕獲組而不是整個匹配('.group(0)'或'.group()')? – oxc 2012-07-06 23:36:33
@JoelCornett是的,我正在使用re.findall() – ffledgling 2012-07-06 23:52:04