簡體   English   中英

正則表達式 Python 中的多個字符串匹配

[英]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.

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