簡體   English   中英

多行字符串 Python 正則表達式

[英]Multiline String Python Regex

我試圖從每一行的這個字符串中獲取最后一個數字,但我的代碼只能得到“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)

您可以使用標志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)
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM