簡體   English   中英

正則表達式 - 字符串和第一次出現之間的Python匹配

[英]Regex - Python matching between string and first occurence

無論我讀了多少文檔,我都很難掌握正則表達式。 我正在嘗試匹配一個字符串和第一次出現之間的所有內容&這就是我所擁有的

link =  "group.do?sys_id=69adb887157e450051e85118b6ff533c&&"
rex = re.compile("group\.do\?sys_id=(.?)&")
sysid = rex.search(link).groups()[0]

我正在使用https://regex101.com/#python來幫助我驗證我的正則表達式,我可以得到rex = re.compile("user_group.do?sys_id=(.*)&")來工作但是.*是貪婪匹配到最后與和即時通訊尋求比賽進行到第&

我想.? 匹配0到1次

您不一定需要正則表達式。 請改用urlparse

>>> from urlparse import urlparse, parse_qs 
>>> parse_qs(urlparse(link).query)['sys_id'][0]
'69adb887157e450051e85118b6ff533c'

Python 3的情況下,將導入更改為:

from urllib.parse import urlparse, parse_qs

您可以簡單地將正則表達式輸出到&amp而不是最終&等等:

import re
link =  "user_group.do?sys_id=69adb887157e450051e85118b6ff533c&&"
rex = re.compile("user_group\.do\?sys_id=(.*)&&")
sysid = rex.search(link).groups()[0]

print(sysid)
.* 

很貪心但是

.*? 

不應該在正則表達式中。

.? 

只會在0-1次尋找任何角色

.*? 

將查找最早的匹配事件。 我希望能夠解釋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM