我查看了Stackoverflow上所有相关的帖子,但是没有一个答案对我有帮助。我的清单中有下列项目:
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)这些表达式在Notepad++中工作得很好,但在我的脚本中却不起作用。
当我运行我的脚本时,我会得到标题中提到的错误。这里有什么可行的解决办法吗?
发布于 2016-12-29 19:25:09
该组是不匹配的,因为捕获组是在负前瞻中使用的。如果有匹配,则该组将永远不会被填充。
相反,使用
re.sub(r'^(?!(?:topics/_Reuse.*)?$).*$', r'@@@@@\g<0>', s)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>反向引用。
https://stackoverflow.com/questions/41384420
复制相似问题