我想提取數字從串查詢4699183 = regionID%3D4699183 & C = 1,但它不工作:蟒蛇正則表達式來提取模式
>>> import re
>>> string = 'query=regionID%3D4699183&c=1'
>>> string = re.sub("^(regionID%3D\d+)", "", string)
>>> string
'query=regionID%3D4699183&c=1'
我應該怎麼辦呢?
我想提取數字從串查詢4699183 = regionID%3D4699183 & C = 1,但它不工作:蟒蛇正則表達式來提取模式
>>> import re
>>> string = 'query=regionID%3D4699183&c=1'
>>> string = re.sub("^(regionID%3D\d+)", "", string)
>>> string
'query=regionID%3D4699183&c=1'
我應該怎麼辦呢?
您正在詢問一個以region
開頭的匹配項,而您的輸入始於query
。試試這個:
string = re.sub("^.*regionID%3D(\d+).*", r'\1', string)
也可以做到不使用正則表達式,但如果你有其他類型的字符串來測試這種方法可能會失敗:
string = string.split('%3D')[1].split('&')[0]
或者你可以使用re.seach
的建議由Cairnarvon。
^(regionID%3D\d+)
匹配regionID%3D\d+
在您的字符串的開頭,而不是它在您提供的實際字符串中的位置。不過,即使它按照你的預期工作,你只是將所有東西都刪除,顯然這不是你想要的。
試試這個:
>>> import re
>>> s = 'query=regionID%3D4699183&c=1'
>>> m = re.search(r'regionID%3D(\d+)', s)
>>> m.group(1)
'4699183'
這將使用捕獲組到您的字符串之間是否匹配regionID%3D
後的一個或多個數字(貪婪)。
謝謝。有用。 –
雖然,當你真的只想匹配一個子串時使用正則表達式替換是很奇怪的。 – Cairnarvon