2013-05-28 73 views
0

意外結束這正則表達式是用於去除所有的PHP評論。你可以檢查正則表達式嗎?的Python:模式

content = "" 
    with open(file_path, 'r') as content_file: 
     content = content_file.read() 

re.sub(r"""(?|(?:#|//)([^\r\n]*)|/\*([\s\S]*?)\*/)""", "", content) 

我的正則表達式有什麼問題?謝謝。

+0

什麼是你輸入accompnied點.代替這一點,你期待什麼樣的輸出? –

+0

你想做什麼就做什麼?通過提供您嘗試匹配的文本來幫助我們提供幫助。 (?|(?:#| //)([^ \ r \ n] *)|/\ *([\ s \ S] *?)\ * /)「 '。試試這個[在線互動蟒蛇正則表達式調試器](http://www.pythonregex.com/)。 – ixe013

+0

@JonClements,這正則表達式是用於去除所有的PHP評論。我意外地發現了模式錯誤。 –

回答

0

有肯定是錯的部分(?|(?:#|//)
問號充當第一括號量詞(
那麼你的正則表達式模式等同於

('(?' 
'|' 
'(?:#|//)([^\r\n]*)' 
'|' 
'/\*([\s\S]*?)\*/)' 
) 

如果你測試re.compile('(?|a'),你」將獲得與您所涉及的相同的錯誤:unexpected end of pattern

順便說一下,[\s\S]代表任何字符,\n組成;你可以用與標誌re.DOTALL

+0

「(|?」我只是刪除這一部分,它的工作謝謝您的指導。 –