Python正则表达式(sre)_常量.错误:不匹配组)

2024-05-23 18:11:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我查看了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++中工作得非常好,但在我的脚本中却不行。你知道吗

当我运行脚本时,我得到标题中提到的错误。这里有什么可行的解决办法吗?你知道吗


Tags: 项目答案脚本xmlpropertiesstackoverflow帖子dita
1条回答
网友
1楼 · 发布于 2024-05-23 18:11:48

组是不匹配的,因为捕获组是在负前瞻中使用的。如果存在匹配项,则从不填充组。你知道吗

相反,使用

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>反向引用。你知道吗

相关问题 更多 >