簡體   English   中英

正則表達式匹配一行中的多個數字

[英]regex expression to match multiple digits on a single line

試圖獲得多個數字,即使它在同一行。

這是我到目前為止所擁有的

import re

lines = '''

1 2

3

4

G3434343 '''

x = re.findall('^\d{1,2}',lines,re.MULTILINE)
print(x)

我得到的 output 是:

[1,3,4]

我要獲取的output是:

[1,2,3,4]

不確定接下來要嘗試什么有什么想法嗎? 請記住,數字也可以是兩位數,這是另一個輸入示例

8 9
11

15

G54444

上面的 output 應該是 [8,9,11,15]

您使用^將正則表達式錨定到行的開頭。 刪除它以找到例如“2”。

然后你也會從你似乎不想要的“G3434343”中得到“34”。 因此,您需要使用\b告訴正則表達式您需要在數字前后有一個單詞邊界。 (根據需要進行調整,從您的示例中不清楚您如何決定所需的數字。)

但是, \b被解釋為退格鍵,沒有匹配項。 因此,您需要將字符串更改為帶有前導“r”的原始字符串,或者使用另一個反斜杠轉義所有反斜杠。

import re

lines = '''

1 2

3

4

G3434343 '''

x = re.findall(r'\b\d{1,2}\b', lines, re.MULTILINE)
print(x)

這打印:

['1', '2', '3', '4']

您可以嘗試環顧四周:

(?<=\s)\d{1,2}(?=\s)

然后 map 每行的每一個匹配到一個 integer:

[list(map(int, re.findall('(?<=\s)\d{1,2}(?=\s)', line))) for line in lines]

Output:

[[1,2,3,4], [8,9,11,15]]

此處查看 Python 演示。

暫無
暫無

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

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