正则表达式删除字符串半冒号分隔符

时间:2016-02-03 08:38:19

标签: python regex

我第一次学习正则表达式并遇到了以下我遇到问题的问题。

考虑以下段落

M=2

现在我想删除分号字符所包含的所有文字。唯一的问题是文本可以跨越多行,如果在匹配的分号之前达到一个句点,那么应该保留该字符串。例如,上面段落的输出应该如下:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget eros
libero. Duis ac diam pretium velit volutpat facilisis in vel nibh. In lacinia ; neque 
massa, in consectetur lectus ; faucibus vel. Maecenas ; dapibus leo nec ; elit sagittis 
convallis. Sed at lacus consectetur, eleifend urna tristique, consequat orci. Nullam 
ac orci quis elit pellentesque consectetur quis ac libero. Duis lorem sem, sodales ; ut 
massa sed, porta facilisis ex. Aliquam cursus accumsan ante sed maximus. 
在谷歌搜索了一下后,我找到了re.MULTILINE模式,但我不认为这是我需要的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

;[^;.]*;

您可以简单地使用它并替换为empty string。请参阅演示。

https://regex101.com/r/yX8zV8/3

import re
p = re.compile(r';[^;.]*;')
test_str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget eros\nlibero. Duis ac diam pretium velit volutpat facilisis in vel nibh. In lacinia ; neque \nmassa, in consectetur lectus ; faucibus vel. Maecenas ; dapibus leo nec ; elit sagittis \nconvallis. Sed at lacus consectetur, eleifend urna tristique, consequat orci. Nullam \nac orci quis elit pellentesque consectetur quis ac libero. Duis lorem sem, sodales ; ut \nmassa sed, porta facilisis ex. Aliquam cursus accumsan ante sed maximus. "
subst = ""

result = re.sub(p, subst, test_str)