Skip to main content
 首页 » 编程设计

python之在字符串中查找子字符串旁边的所有分隔符并在 python 中替换

2025年05月04日25mq0036

示例字符串:

s = "<sec>John</sec> said hi to a woman (named <sec>Mary)</sec>" 

我需要将其转换为:

s = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)" 

这需要同时适用于开始和结束标记以及所有分隔符,例如“.”、“,”、“-”、“(”、“)”等。

我可以搜索并替换“)”等等,但显然我想要更性感的东西。

所以基本上将所有分隔符移到标签之外。

谢谢!

请您参考如下方法:

下面的正则表达式将帮助您将开始和结束标记内的分隔符移动到结束标记的下一个。

(<sec>)([^.,()-]*)([.,()-])(<\/sec>) 

替换字符串:

\1\2\4\3 

DEMO

>>> s = "<sec>John</sec> said hi to a woman (named <sec>Mary)</sec>" 
>>> re.sub(r'(<sec>)([^.,()-]*)([.,()-])(<\/sec>)', r'\1\2\4\3', s) 
'<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)' 

或

这适用于任何标签,

>>> s = "<sec>John</sec> said hi to a woman (named <sec>Mary)</sec>" 
>>> re.sub(r'(<(\S+?\b)[^>]*>)([^.,()-]*)([.,()-])(<\/\2>)', r'\1\3\5\4', s) 
'<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)'