簡體   English   中英

正則表達式匹配多個字符串之一

[英]Regex to match one of multiple strings

需要正則表達式方面的幫助以匹配以下任一項:

data.testID=abd.123,
data.newID=abc.123.123,
data.testcaseID=abc.1_2,
data.testid=abc.123,
data.TestCaseID=abc.1.2,

我試過

m = re.search("data.[test.+|new]?[ID]?=(.+)?[,\}]")

您可以使用

m = re.search(r"data\.(?:test\w*|new)?(?:ID)?=([^,]+)", text, re.I)

請參閱正則表達式演示 詳情

  • data\\. - data. 字符串(注意轉義的.
  • (?:test\\w*|new)? - 可選test + 零個或多個字字符或new字符串
  • (?:ID)? - 一個可選的ID子串
  • = - a =符號
  • ([^,]+) - 第 1 組:除,之外的一個或多個字符。

看一個Python 演示

import re
texts = ['data.testID=abd.123,','data.newID=abc.123.123,','data.testcaseID=abc.1_2,','data.testid=abc.123,','data.TestCaseID=abc.1.2,']
rx = re.compile(r'data\.(?:test\w*|new)?(?:ID)?=([^,]+)', re.I)
for text in texts:
    m = rx.search(text)
    if m:
        print(text, '=>', m.group(1))

輸出:

data.testID=abd.123, => abd.123
data.newID=abc.123.123, => abc.123.123
data.testcaseID=abc.1_2, => abc.1_2
data.testid=abc.123, => abc.123
data.TestCaseID=abc.1.2, => abc.1.2

暫無
暫無

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

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