![](/img/trans.png)
[英]python regular expression: match either one of several regular expressions
[英]Python regular expression to match either a quoted or unquoted string
我試圖用Python編寫一個正則表達式,該表達式將匹配帶引號的帶空格的字符串或不帶空格的無引號的字符串。 例如,給定字符串term:foo
,結果將是foo
;給定字符串term:"foo bar"
,結果將是foo bar
。 到目前為止,我已經提出了以下正則表達式:
r = re.compile(r'''term:([^ "]+)|term:"([^"]+)"''')
問題在於,匹配項可以出現在group(1)
或group(2)
因此我必須執行以下操作:
m = r.match(search_string)
term = m.group(1) or m.group(2)
有什么辦法可以一步一步完成全部操作嗎?
避免分組,而使用前瞻性/后向斷言來消除不需要的部分:
s = 'term:foo term:"foo bar" term:bar foo term:"foo term:'
re.findall(r'(?<=term:)[^" ]+|(?<=term:")[^"]+(?=")', s)
得到:
['foo', 'foo bar', 'bar']
似乎您並不是真的想要在這里re.match
。 您的正則表達式幾乎正確,但您分組過多。 這個怎么樣?
>>> s
('xyz term:abc 123 foo', 'foo term:"abc 123 "foo')
>>> re.findall(r'term:([^ "]+|"[^"]+")', '\n'.join(s))
['abc', '"abc 123 "']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.