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

标签 python regex search replace

示例字符串:

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>)'

关于python - 在字符串中查找子字符串旁边的所有分隔符并在 python 中替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25584950/

相关文章:

database - 使用 Solr 搜索数值数据

python - 在以 block 读取的字节流中查找模式

algorithm - 修改 A* 以在矩形网格上找到最接近多个目标的路径

python - 在 OpenCV Python 中将图像减少为 N 种颜色

javascript - 使用 RegEx 匹配字符串列表

python - 如何获得 Jinja2 模板使用的所有文件的列表?

c++ - 元正则表达式 : test if regex is only a string (no regex "wildcards")

python - 正则表达式最佳实践 : is it ok to use regex to match multiple phrases?

python - 如何将字典列表导入为 numpy 数组

python - 在 Python 中打开文件以进行独占访问的最佳方法是什么?