【问题标题】:Grabbing lines from text but fail to get multiple returns从文本中抓取行但无法获得多个返回
【发布时间】:2018-12-28 08:53:41
【问题描述】:

tl;博士

https://repl.it/repls/AbandonedSoulfulNetbsd(所有代码)。

正则表达式:

https://regex101.com/r/Puggjm/1/

编辑: 执行时的正则表达式仅显示:1 个匹配项,n 个步骤。而不是匹配数,以对应于整个文本中实际找到的行号数。

main.py

​​>
if __name__ == '__main__':
    # See text content in the textfile.txt, 
    # https://repl.it/repls/AbandonedSoulfulNetbsd
    pattern = re.compile(r'^[0-9].*', re.M | re.S)
    for m in re.finditer(pattern, text): 
        print(m.group(0))

渴望结果

好吧,我想获取实际上以数字开头的所有行(不管数字是什么),但是,我不知道是否有正则表达式方法可以分别获取每行?或者,应该改用re.split() 之类的东西吗?

更新:

^[0-9](.*?)$ 正则表达式模式给了我 13 个匹配项, https://regex101.com/r/Puggjm/2/ - 但是,我仍然无法让它在 python 中工作。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您需要去掉s 标志,而可以使用\d

    ^\d.*$
    

    单行标志改变点的行为,因为它现在也匹配换行符,因此 - 使用你的量词 - 一切。 \d 包括 [0-9](以及其他一些数字)。见your modified demo

    【讨论】:

    • 不幸的是,这在 Python 中似乎不起作用,我在匹配对象 [0] 的一行中得到了结果。这不是我想要的。
    • 我的错,这确实有效!但是必须只启用 re.M 并排除其他标志。惊人的!这是修改后的版本:regex101.com/r/Puggjm/4
    • Jan,这怎么能扩展到忽略n。那是例如“11.”所以忽略所有后面没有其他内容的行号。 [^\s*] 似乎没有完全起作用。
    • @JohnSmith:有几种方法,一种是在^\d.+$ 的数字后至少需要一个字符,请参阅regex101.com/r/Puggjm/8 如果这没有帮助,请发布另一个问题。
    猜你喜欢
    • 2022-01-04
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多