示例字符串:
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
>>> 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>)'
关于python - 在字符串中查找子字符串旁边的所有分隔符并在 python 中替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25584950/