【问题标题】:Multiline String Python Regex多行字符串 Python 正则表达式
【发布时间】:2020-05-05 19:40:58
【问题描述】:

我试图从每一行的这个字符串中获取最后一个数字,但我的代码只能得到“25”。我想得到 15、10、5、5 和 25。

import re

string = """

1073811-S0-A M3S FRT SUBFRAME MNT FRT INR LH 15
1073851-S0-A M3S REAR QUARTER INNER LH 10 
1080023-S0-C M3 ASY, COWL SIDE, LH 5 
1080024-S0-C M3 ASY, COWL SIDE, RH 5
1080473-S0-B M3 ASY, SHOTGUN TOWER, LH 25
"""

qty = re.findall(r'\d{1,3}$', string)

print(qty)

【问题讨论】:

  • 使用qty = re.findall(r'(?m)(\d+)\s*$', string)
  • 你在找re.MULTILINE
  • 谢谢 Wiktor Stribiżew!天才!工作和谷歌搜索了几个小时!
  • @ForceBru - 也谢谢你。届时我将对此进行更多研究。以前我试过这个但收到错误所以认为不是这样。
  • 这看起来像是 stackoverflow.com/q/587345/11301900 的副本。

标签: python regex multilinestring


【解决方案1】:
import re
str="""1073811-S0-A M3S FRT SUBFRAME MNT FRT INR LH 15
1073851-S0-A M3S REAR QUARTER INNER LH 10 
1080023-S0-C M3 ASY, COWL SIDE, LH 5 
1080024-S0-C M3 ASY, COWL SIDE, RH 5
1080473-S0-B M3 ASY, SHOTGUN TOWER, LH 25"""
pattern = re.compile(r'(?m)(\d+)\s*$')
match = pattern.findall(str)
for i in match:
  print(i)

输出是: 15 10 5 5 25

【讨论】:

    【解决方案2】:

    您可以使用标志re.MULTILINE

    qty = re.findall(r'\d{1,3}$', string, flags=re.MULTILINE)
    

    你会得到:['15', '5', '25']

    但有些行也以尾随空格结尾。 因此,您可以使用带有可选空格的组:

    qty = re.findall(r'(\d{1,3})\s*$', string, flags=re.MULTILINE)
    

    你会得到:['15', '10', '5', '5', '25']

    您还可以搜索后跟可选空格并以字符串结尾的数字。您可以通过积极的观察来做到这一点:

    qty = re.findall(r'\d{1,3}(?=\s*$)', string, flags=re.MULTILINE)
    

    【讨论】:

    • @Dajuice911,不客气。你可以接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2013-06-12
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多