我第一次学习正则表达式并遇到了以下我遇到问题的问题。
考虑以下段落
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模式,但我不认为这是我需要的。任何帮助将不胜感激。
答案 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)