Py学习  »  Python

Python正则表达式,带行开头的多行搜索

m2as3registeredservices ohmone • 4 年前 • 1738 次点击  

我有一个文本块,如下所示。

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']
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130676
文章 [ 1 ]  |  最新文章 4 年前