以下代碼提取出現在字串中的第一個數字序列:
num = re.findall(r'^\D*(\d )', string)
我想補充一點,正則運算式與vor前面的數字不匹配V。
例子:
string = 'foobarv2_34 423_wd"
Output: '34'
uj5u.com熱心網友回復:
如果您需要獲得第一個匹配項,則需要使用re.search,而不是re.findall。
在這種情況下,您可以使用更簡單的正則運算式,例如(?<!v)\d with re.I:
import re
m = re.search(r'(?<!v)\d ', 'foobarv2_34 423_wd', re.I)
if m:
print(m.group()) # => 34
請參閱Python 演示。
細節
(?<!v)- 如果在當前位置的左側有一個v(或使用V了),則匹配失敗的負向后查找re.I\d- 一位或多位數字。
如果re.search由于某種原因無法使用,您可以使用
^.*?(?<!v)(\d )
請參閱此正則運算式演示。請注意,\D*(零個或多個非數字)被替換為.*?匹配零個或多個字符而不是換行符盡可能少的字符(使用re.Sor re.DOTALL,它也將匹配換行符),因為需要匹配所有前面沒有的數字與v.
更多細節:
^- 字串的開始.*?- 盡可能少的零個或多個除換行符以外的字符(?<!v)- 如果在當前位置的左側有一個v(或使用V了),則匹配失敗的負向后查找re.I(\d )- 第一組:一個或多個數字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/476786.html
