Python 正则表达式获取文本左对齐

Python 正则表达式获取文本左对齐,python,regex,Python,Regex,我是新加入Regex世界的,我浏览过很多网站,却没有找到我想要的。 我有一个文件,需要在那里取地址。地址在纸的左边对齐(右边同一行有文本) 关于多行的一些信息(6) 我不需要也不能粘贴,因为 它包含一些个人信息。 想象一下这里有很多文字。。。 想象一下这里有很多文字。。。 想象一下这里有很多文字。。。 卖给比尔 一些Cie一些其他Cie 化学某条路1111化学某条路2222化学某条路 此处城市QC J0Q 1W0此处其他城市QC J0Q 1W0 加拿大 我需要在“销售对象”侧获取文本。 我试图

我是新加入Regex世界的,我浏览过很多网站,却没有找到我想要的。 我有一个文件,需要在那里取地址。地址在纸的左边对齐(右边同一行有文本)

关于多行的一些信息(6)
我不需要也不能粘贴,因为
它包含一些个人信息。
想象一下这里有很多文字。。。
想象一下这里有很多文字。。。
想象一下这里有很多文字。。。
卖给比尔
一些Cie一些其他Cie
化学某条路1111化学某条路2222化学某条路
此处城市QC J0Q 1W0此处其他城市QC J0Q 1W0
加拿大
我需要在“销售对象”侧获取文本。 我试图使用\r,但它没有返回任何结果! 我不知道如何从行的开头提取文本,直到有一堆空格。 例如:一些Cie(如果超过1个空格,请转到下一行)

然后我有:
salled\sTo(?=\s{2100})
但是当
(?=\s{2100})返回所有内容时,它不会工作

我看到:
^((?:\S+\S+{2}\S+).
,这与我想要的非常接近,但我不了解全部内容。我想匹配2到5个单词

然后我有:
^([A-Za-z0-9-]*)(?=\s{2100})
,我认为这会在行的开头匹配,直到有2个以上的空格。 我做错了什么

我需要在纯正则表达式中执行此操作(不允许使用标志)


我完全迷路了。如果您能提供一些指导,我们将不胜感激。

您的最后一次尝试已接近尾声。以下是我的想法:

^.+?(?=[^\S\n]{2,})
说明:

  • +
    -一个或多个字符
    • -非贪婪,为下一部分提供优先级,即避免匹配一堆空格
  • [^\S\n]
    -除换行符以外的任何空白字符(这类似于
    \S
    减去
    \n
    • {2,}
      -两个或更多
与示例中的匹配:

出售给
一些Cie
chemin some路1111号
此处城市QC J0Q 1W0
加拿大

Python中的简单示例:

import re

pattern = re.compile(r'^.+?(?=[^\S\n]{2,})')

with open(filename) as f:
    for line in f:
        m = pattern.match(line)
        if m:
            print(m.group())

它正在工作,但只有在启用“全局”和“多行”标记时才起作用。有没有一种方法可以让它在没有具体说明的情况下工作?我使用的工具不允许我指定任何启用了flagsI found out(m?)的多行。现在我很确定问题来自我的工具。谢谢@mrinfo Global在Python中不是真正的标志。相反,您使用不同的函数,如
re.search
vs
re.findall
。Regex101只是为了方便而使用它。同样,如果在行上迭代,则不需要多行。我发布了一个简单的示例。事实上,这是因为我使用的工具使用python,我无法编写自己的python方法,只能在yml文件中编写正则表达式。老实说,这有点奇怪。。。当我使用我的真实文件时,它获取的行太多,我认为需要在其中添加一些分隔符