簡體   English   中英

Python正則表達式提取包含數字和字母的子字符串

[英]Python regex extracting substrings containing numbers and letters

我試圖提取包含數字和字母的子字符串:

string = "LINE     : 11m56.95s CPU    13m31.14s TODAY"

我只想要11分56.95秒和13分31.14秒

我嘗試這樣做:

re.findall('\d+', string)

那沒有給我我想要的東西,我也嘗試了這個:

re.findall('\d{2}[m]+\d[.]+\d|\+)

那也不起作用,還有其他建議嗎?

您當前的正則表達式與您期望的不符。

您可以使用以下正則表達式提取這些子字符串。

re.findall(r'\d+m\d+\.\d+s', string)

現場演示

范例

>>> import re
>>> s = 'LINE     : 11m56.95s CPU    13m31.14s TODAY'
>>> for x in re.findall(r'\d+m\d+\.\d+s', s):
...     print x

11m56.95s
13m31.14s

嘗試這個:

re.findall("[0-9]{2}[m][0-9]{2}\.[0-9]{2}[s]", string)

輸出:

['11m56.95s', '13m31.14s']

您的Regex模式格式不正確。 當前匹配:

\d{2}  # Two digits
[m]+   # One or more m characters
\d     # A digit
[.]+   # One or more . characters
\d|\+  # A digit or +

相反,您應該使用:

>>> import re
>>> string = "LINE     : 11m56.95s CPU    13m31.14s TODAY"
>>> re.findall('\d+m\d+\.\d+s', string)
['11m56.95s', '13m31.14s']
>>>

以下是新模式匹配的說明:

\d+  # One or more digits
m    # m
\d+  # One or more digits
\.   # .
\d+  # One or more digits
s    # s
\b   #word boundary
\d+  #starts with digit
.*?   #anything (non-greedy so its the smallest possible match)
s    #ends with s
\b   #word boundary

如果您的行都像您的示例拆分將工作:

s = "LINE     : 11m56.95s CPU    13m31.14s TODAY"

spl = s.split()

a,b = spl[2],spl[4]
print(a,b)
('11m56.95s', '13m31.14s')

暫無
暫無

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

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