2016-12-29 27 views
0

我檢查了所有Stackoverflow上的相關帖子,但沒有任何答案有幫助。我在列表中有下列項目:Python的正則表達式(sre_constants.error:無與倫比的組)

topics\Utmutatok\Uzemeltetoi_Utmutato.dita 
topics\_Reuse\Definitions\FRP_CUST_PROD_properties.xml 
topics\_Reuse\Definitions\FRP_properties.xml 
topics\_Reuse\Definitions\FR_Definitions.dita 

我用我的Python文件下面幾行:

kifejezes5 = re.sub(r'^(?!(?:topics/_Reuse(.*?)|^$)$|$).*$', r'@@@@@.\1', kifejezes4) 

表達在記事本++完美地工作,但不是在我的腳本。

當我運行腳本時,出現標題中提到的錯誤。這裏有沒有可能的解決方法?

+0

您認爲''!''和'\ 1'是什麼意思? – user2357112

+1

您在負向預覽中有一個捕獲組。該團隊將永遠不會被填充,否則,將不會有任何匹配。 –

+0

請解釋你需要得到什麼輸出,比如'topics \ _Reuse \ Definitions \ FRP_CUST_PROD_properties.xml'? –

回答

1

該組是不匹配的,因爲捕獲組在反向預測中使用。如果有匹配的話,該組不會被填充。

相反,使用

re.sub(r'^(?!(?:topics/_Reuse.*)?$).*$', r'@@@@@\g<0>', s) 

online Python demo

import re 
s = 'topics\_Reuse\Definitions\FRP_CUST_PROD_properties.xml' 
res = re.sub(r'^(?!(?:topics/_Reuse.*)?$).*$', r'@@@@@\g<0>', s) 
print(res) 
# => @@@@@topics\_Reuse\Definitions\FRP_CUST_PROD_properties.xml 

的模式匹配:

  • ^ - 串
  • 開始
  • (?!(?:topics/_Reuse.*)?$) - 沒有隨着topics/_Reuse然後任何0+字符直到字符串結尾或字符串結尾(字符串不能爲空)
  • .*$ - 任何0+字符(除換行符字符以外)直到字符串結尾。

替換模式包含一個反向引用\g<0>對整個匹配。

+1

感謝您的明確解釋!我誤解了反向引用....現在沒關係! – user2666249

相關問題