正则表达式匹配多个字符串之一
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)
见regex demo。 详情:
data\.
- data.
字符串(注意转义的 .
)
(?:test\w*|new)?
- 可选的 test
+ 零个或多个字符或 new
字符串
(?:ID)?
- 一个可选的 ID
子串
=
- =
标志
([^,]+)
- 第 1 组:除 ,
. 之外的一个或多个字符
看到一个Python demo:
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
需要正则表达式方面的帮助以匹配以下任一条件:
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)
见regex demo。 详情:
data\.
-data.
字符串(注意转义的.
)(?:test\w*|new)?
- 可选的test
+ 零个或多个字符或new
字符串(?:ID)?
- 一个可选的ID
子串=
-=
标志([^,]+)
- 第 1 组:除,
. 之外的一个或多个字符
看到一个Python demo:
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