[英]Python regex to match variable pattern
我正在嘗試編寫一個匹配兩種模式的python正則表達式:第一個是scratch_alpha
,第二個是scratch_alpha1*12
(其中12可以是任何十進制數字),我想將*
后面的值放在變量內,如果在*
之后檢測到scratch_alpha,只需在變量中寫入1
我寫了這個正則表達式: ([a-zA-Z0-9\\_*]+)(\\*\\d+)?
我希望在此之后得到兩個組,第一個組將是名稱“ scratch_alpha”,第二個組將是*
或None之后的數字(如果為None,則將變量初始化為1)。
但是在我的正則表達式中,似乎第一組包含了所有內容(scratch_alpha * 12),而第一組中沒有scratch_alpha,第二組中沒有value。
第一組不需要*
([a-zA-Z0-9\_]+)(\*\d+)?
您還可以更改(\\*\\d+)?
到(\\*(\\d+))?
如果要在*
之前和之后分別輸入字符。
發生這種情況的原因是,在第一個括號內放置了+
,這意味着至少出現了一次或多次。 並且由於您的第二個括號有一個?
,第二組是可選的。 因此,將其省略,因為您的第一個括號可以匹配您的整個字符串,而第二個括號則不需要匹配任何內容。
您可以通過從[]
刪除*
來解決此問題,這樣它就不會被匹配,並且您的第一個括號中的*
也不會被匹配。 因此,現在您的正則表達式將是([a-zA-Z0-9\\_]+)(\\*\\d+)?
。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.