[英]Multiple string match in regex Python
我想在字符串中找到以下模式的匹配項 (field1)(field2)(field3)
字段 1 可以是 'alpha' 或 'beta' 或 'gamma' 字段 2 是任何數字(可以是整數或小數) 字段 3 是 'dollar' 或 'sky' 或 'eagle' 或 'may'
輸入字符串 1:“有一個字符串包含 alpha 2 sky 作為其中的一部分” Output1:alpha 2 sky
輸入字符串 2:“這句話包含一個模式 beta 10.2 eagle” 輸出 2:beta 10.2 eagle
我正在嘗試以下代碼,但將多個字符串匹配包含在一起並不靈活。 value = "這句話包含一個模式 beta 10.2 eagle"
match = re.findall("beta \d.* dollar", value)
您可以使用以下正則表達式來收集所有相關字段
(alpha|beta|gamma)
: 捕獲組 - 與此單詞之一交替\s+
:后跟 1+ 個空格(
: 捕獲組
\d+
: 1+ 位,后跟(?:\.\d+)?
:(可選)非捕獲組 - 文字 '.' 后跟 1+ 位數字)
: 關閉捕獲組\s+
:后跟 1+ 個空格(dollar|sky|eagle|may)
: 捕獲組 - 與其中一個詞交替import re
regex = r'(alpha|beta|gamma)\s+(\d+(?:\.\d+)?)\s+(dollar|sky|eagle|may)'
s = '''
There is a string which contains alpha 2 sky as a part of it
This sentence contains a pattern beta 10.2 eagle
'''
match = re.finditer(regex, s)
for m in match:
print(m.group(0))
# alpha 2 sky
# beta 10.2 eagle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.