[英]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.