Python,正则表达式从字符串中提取只处理数字而不是字母
我正在使用正则表达式从url提取id 它适用于数字id,但不适用于id的“aa” 例如,这不起作用:Python,正则表达式从字符串中提取只处理数字而不是字母,python,regex,Python,Regex,我正在使用正则表达式从url提取id 它适用于数字id,但不适用于id的“aa” 例如,这不起作用: http://TESTETESTE/?s_device=m&bm_campaign=aa&utm_affiliate&b 但这确实: http://TESTETESTE/?s_device=m&bm_campaign=301103863&bf_adgroup 我的代码是: df["id"] = df['captureurl'].str.extract(
http://TESTETESTE/?s_device=m&bm_campaign=aa&utm_affiliate&b
但这确实:
http://TESTETESTE/?s_device=m&bm_campaign=301103863&bf_adgroup
我的代码是:
df["id"] = df['captureurl'].str.extract('campaign=(\d+)')
正则表达式
\d
匹配“任何十进制数字;这相当于类[0-9]
”(引用自)
如果改为使用(\d |\w)
(\w
“匹配任何字母数字字符;这相当于类[a-zA-Z0-9]
”)。或者直接展开它:[a-zA-z0-9]
,它将匹配aa
很好:
df["id"] = df['captureurl'].str.extract('bm_campaign=([a-zA-Z0-9]+)')
正则表达式
\d
匹配“任何十进制数字;这相当于类[0-9]
”(引用自)
如果改为使用(\d |\w)
(\w
“匹配任何字母数字字符;这相当于类[a-zA-Z0-9]
”)。或者直接展开它:[a-zA-z0-9]
,它将匹配aa
很好:
df["id"] = df['captureurl'].str.extract('bm_campaign=([a-zA-Z0-9]+)')
这是因为
\d
只匹配数字。。。为什么不使用'campaign=([A-Za-z0-9]+)”
或者等效地使用'campaign=([^\W_U8;]+)”
?这是因为\d
只匹配数字。。。为什么不使用'campaign=([A-Za-z0-9]+)”
或等效的'campaign=([^\W\]+)”
?