我有一个文本块,如下所示。
import re
one = """
ASDFABC
ABC
ABC
ABC
ASDF
ASDF
ASDF
ASDFABC"""
two = """\
ABC
ABC
ABC
ASDF
ASDF
ASDF
ASDFABC"""
我正在寻找一种方法来替换整个街区
启动
从ABC改为单一的“测试”。例如,变量1应该导致,
"""
ASDFABC
TEST
ASDF
ASDF
ASDF
ASDFABC"""
作为旁注,不从行首开始的ABC可以是“一”中第一行和最后一行所示的任何地方,这些应该被忽略。如“2”所示,ABC后面不一定跟着“\n”
这怎么可能呢?
迄今为止的尝试。
>>> re.findall(r"(?:\nABC.*)+", one)
['\nABC\nABC\nABC']
>>> re.findall(r"(?:\nABC.*)+", two)
['\nABC\nABC']
>>> re.findall(r"(?:\nABC.*)+", two, re.M)
['\nABC\nABC']
>>> re.findall(r"(?:\nABC.*)+", two, re.MULTILINE|re.DOTALL)
['\nABC\nABC\n\nASDF\nASDF\nASDF\nASDFABC']
>>> re.findall(r"(?:^ABC.*)+", two, re.MULTILINE|re.DOTALL)
['ABC\nABC\nABC\n\nASDF\nASDF\nASDF\nASDFABC']
>>> re.findall(r"(?:^ABC.*)+", two, re.MULTILINE)
['ABC', 'ABC', 'ABC']
>>> re.findall(r"(?:\n*ABC.*)+", two, re.MULTILINE)
['ABC\nABC\nABC', 'ABC']