0
當我運行下面的代碼:Python正則表達式lookbehind不一致?
進口重新
s = 'baaaad'
l = re.findall(r'((a)(?=a))', s)
print l
for elem in l:
print ''.join(elem)
我得到的輸出:
[( 'A', 'A'),( 'A', 'A' ),('a','a')] aa aa aa
這是預期的。但是,當我嘗試了回顧後,即相應的策略:
s = 'baaaad'
l = re.findall(r'((?<=b)(a))', s)
print l
for elem in l:
print ''.join(elem)
我得到:
[( 'A', 'A')] AA
我期待得到:
[('b','a')] ba
爲什麼對我(這個)意外的行爲?如果我做錯了什麼,它是什麼?以及如何解決它?
謝謝!
只需要提一下,在查找'((?<=(b))((a))'' – revo
'中捕獲字符是沒有問題的。所以你在說,即使是對於預見的「正確」答案是因爲其他原因? – whirlaway
@whirlaway:是的。你有兩個可見效果恰好相反的bug,所以它恰好產生你想要的輸出。當你稍微改變了一些東西時,錯誤的影響就停止了。 – user2357112