首页 > 解决方案 > 仅替换匹配正则表达式的起始字符

问题描述

假设我使用正则表达式r'\n[^ \t]+:'在句子中搜索。它与 和 之类的字符串me@locmsglhost\r\nSubject: injected subject匹配TARDES.\nLES MANDO LOS REPORTES DE JL\nNOTA: SIN PAROS

所以我只想\n用空格替换字符串中所有出现的正则表达式。

我尝试了几种方法,但它们无法正确处理不同的输入。

标签: pythonregexreplace

解决方案


您可以使用反向引用 ( \1):

>>> import re
>>> s = 'me@locmsglhost\r\nSubject: injected subject'
>>> re.sub(r'\n([^ \t]+:)', r' \1', s)
'me@locmsglhost\r Subject: injected subject'

或前瞻断言 ( (?=...)):

>>> re.sub(r'\n(?=[^ \t]+:)', ' ', s)
'me@locmsglhost\r Subject: injected subject'

推荐阅读