2014-04-02 132 views
0

我想用Python中的正規快件是用Perl編寫爲:如何將此perl正則表達式轉換爲python?

$text =~ s/\[\[category:([^|\]]*)[^]]*\]\]/[[$1]]/ig; 

任何人有關於如何做到這一點的想法?我還需要提取捕獲組(Perl中的$1)。

+1

使用'\ 1'在蟒蛇逆向引用。 're.sub'替換's ///'看看這個:http://stackoverflow.com/questions/5984633/python-re-sub-group-number-after-number – chilemagic

+4

你是什麼意思的「實現」?你想在Python中實現一個正則表達式引擎,還是隻想找到與你給出的Perl正則表達式相當的Python正則表達式?你看過Python在線文檔嗎?它是完整的,只需要一點研究,你應該能夠弄清楚。 –

回答

0

在Python中,您使用re.sub而不是perl s///運算符。您將它定義爲正則表達式字符串作爲第一個參數。 「原始字符串」的特殊語法不需要\轉義,就像r'\'一樣,可以幫助你。替代作爲第二個參數,您也使用\1而不是$1作爲後端參考。在Python中沒有主題變量這樣的事情,所以你需要顯式傳遞源字符串作爲第三個參數。然後,您將正則表達式標誌添加爲專用的命名參數,它們的值存儲在re.Ire.S,...常量中。你不需要g標誌作爲re.sub是全球默認:

import re 
text = re.sub(r'\[\[category:([^|\]]*)[^]]*\]\]', '[[\1]]', 
       text, flags=re.I) 
相關問題