[英]python regex to replace repetitive pattern “number and space”
input = 3136 -2 1806481261 191415576 883713178 259822501 0 79439 0 0 0
我想從上述輸入中提取值259822501。
我可以使用以下正則表達式將其提取:
\d+\s-?\d+\s+\d+\s+\d+\s+\d+\s+(\d+)[\d\\s]+.*
如果您在上述正則表達式中清楚看到,則模式“ \\ d + \\ s +”是重復的。
在這里尋找更有效的正則表達式。
您可以使用帶有重復運算符{}
的(未捕獲)組來避免重復,之后再指定重復次數:
^(?:-?\d+\s+){5}(\d+)
由於259822501
在-?\\d+\\s+
5次重新259822501
之后出現,因此我使用了{5}
。 現在,捕獲的組1將具有您想要的輸出。
例:
In [39]: s
Out[39]: '3136 -2 1806481261 191415576 883713178 259822501 0 79439 0 0 0'
In [40]: re.search(r'^(?:-?\d+\s+){5}(\d+)', s).group(1)
Out[40]: '259822501'
假設輸入是一個由空格分隔的字符串,並且基於正則表達式,要提取的數字具體是第6個數字,則可以使用split()
和索引:
>>> input = '3136 -2 1806481261 191415576 883713178 259822501 0 79439 0 0 0'
>>> input.split()
['3136', '-2', '1806481261', '191415576', '883713178', '259822501', '0', '79439', '0', '0', '0']
>>> input.split()[5]
'259822501'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.