我有一個輸入文本它可以是:醒目可選部分的正則表達式
"URL: http://www.cnn.com Cookie: xxx; yyy"
或者只是:
"URL: http://www.cnn.com"
如何同時捕獲URL和餅乾到Python中兩個獨立的變量?我不知道如何指定的部分是可選的cookie。
感謝。
我有一個輸入文本它可以是:醒目可選部分的正則表達式
"URL: http://www.cnn.com Cookie: xxx; yyy"
或者只是:
"URL: http://www.cnn.com"
如何同時捕獲URL和餅乾到Python中兩個獨立的變量?我不知道如何指定的部分是可選的cookie。
感謝。
str = 'URL: http://www.cnn.com Cookie: xxx; yyy'
match = re.search(r'URL: (\S+)(Cookie: (.*))?', str)
print match.group(1)
print match.group(3)
>>> http://www.cnn.com
>>> xxx; yyy
括在可選部分(餅乾:XXX,YYY「)?
import re
inputstring = "URL: http://www.cnn.com Cookie: xxx; yyy"
if 'Cookie' in inputstring:
m = re.match('URL: (.*?) Cookie: (.*)', inputstring)
if m:
url = m.group(1)
cookie = m.group(2)
print url
print cookie
else:
m = re.match('URL: (.*)', inputstring)
if m:
url = m.group(0)
print url
只需使用單獨的捕捉組,並?
爲您正則表達式的可選部分。如果捕獲組不捕捉任何東西。該集團的價值將None
。
>>> regex = re.compile(r'URL: (\S+)(?:\s+Cookie: (\S+))?')
>>> regex.match("URL: http://www.cnn.com Cookie: xxx;yyy").groups()
('http://www.cnn.com', 'xxx;yyy')
>>> regex.match("URL: http://www.cnn.com").groups()
('http://www.cnn.com', None)
我只是用\S+
在上述例如目的URL和cookie的模式,與你的真實URL和cookie的圖案更換。
而不是groups()
您可以使用group(1)
和group(2)
- 行爲是相同的,但groups()
是不錯的解包。例如:
url, cookie = match.groups()
謝謝,我不知道可以被嵌套。 – jackhab 2011-01-12 12:05:18