正则表达式匹配多个字符串之一

     2023-02-22     54

关键词:

【中文标题】正则表达式匹配多个字符串之一【英文标题】:Regex to match one of multiple strings 【发布时间】:2021-12-27 12:24:29 【问题描述】:

在正则表达式方面需要帮助以匹配以下任一情况:

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]?=(.+)?[,\]")

【问题讨论】:

[]s 在正则表达式中作为“其中的一个字符。如果你想要组,你必须使用普通括号 - ()。如果你想要一个文字点,你必须转义它. 所以更像r"data\.(test.+|new)(id|ID)=(.+)[,\]" 【参考方案1】:

你可以使用

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

【讨论】:

正则表达式学习之一

这次爬取页面所用到的正则表达式\\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\\f\\r\\n\\t\\v]\\S匹配任何非空白字符,等价于[^\\f\\n\\r\\t\\v]。\\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。.... 查看详情

如何检查字符串是不是匹配数组中的正则表达式之一?

】如何检查字符串是不是匹配数组中的正则表达式之一?【英文标题】:Howtocheckisstringmatchoneoftheregexinarray?如何检查字符串是否匹配数组中的正则表达式之一?【发布时间】:2017-10-1600:31:13【问题描述】:我想在我的项目中创建... 查看详情

mysql正则表达式匹配

...本1000的所有行。selectnamefromuserwherenameREGEXP\'.000\';.在正则表达式中表示匹配任意一个字符。2.进行OR匹配:selectnamefromuserwherenameREGEXP\'1000|2000\';检索name中包含文本1000或2000的所有行。3.匹配几个字符之一:selectnamefromuserwherenameREGEXP\'... 查看详情

正则表达式匹配两个单词之一

】正则表达式匹配两个单词之一【英文标题】:Regexmatchoneoftwowords【发布时间】:2011-10-1508:45:50【问题描述】:我的输入只能有两个值apple或banana。我可以使用什么正则表达式来确保两个单词中的任何一个都已提交?【问题讨论... 查看详情

正则表达式应该只匹配两种类型的带引号的字符串之一

】正则表达式应该只匹配两种类型的带引号的字符串之一【英文标题】:regexshouldmatchonlyoneoftwotypesofquotedstrings【发布时间】:2019-07-1719:57:04【问题描述】:我需要一个匹配用双引号括起来的字符串的正则表达式。如果此模式用单... 查看详情

正则表达式学习之一

这次爬取页面所用到的正则表达式\\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\\f\\r\\n\\t\\v]\\S匹配任何非空白字符,等价于[^\\f\\n\\r\\t\\v]。\\w匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。.... 查看详情

如何将整个字符串匹配为具有单个正则表达式的两种格式之一?

】如何将整个字符串匹配为具有单个正则表达式的两种格式之一?【英文标题】:Howtomatchentirestringtobeoneoftwoformatswithasingleregularexpression?【发布时间】:2018-02-2814:59:19【问题描述】:我需要验证可以具有两种格式之一的值,并且... 查看详情

正则表达式匹配多个字符

*    匹配前一个字符出现0次或者无限次+    匹配前一个字符出现1次或者无限次?   匹配前一个字符出现0次或者1次m   匹配前一个字符出现m次m,n  匹配前一个字符出现从m次到n次 查看详情

将字符串匹配到多个正则表达式模式并返回组号

】将字符串匹配到多个正则表达式模式并返回组号【英文标题】:Matchastringtomultipleregexpatternsandreturnthegroupnumber【发布时间】:2019-07-1514:00:49【问题描述】:我正在使用Matcher类在Java中处理正则表达式这里是我所拥有的描述:我有... 查看详情

如何在正则表达式中匹配多个单词

】如何在正则表达式中匹配多个单词【英文标题】:Howtomatchmultiplewordsinregex【发布时间】:2011-07-2206:32:43【问题描述】:只是一个简单的正则表达式,我不知道怎么写。正则表达式必须确保字符串匹配所有3个单词。我知道如何... 查看详情

在javascript中匹配具有多个正则表达式模式的字符串

】在javascript中匹配具有多个正则表达式模式的字符串【英文标题】:Matchstringswithmultipleregexpatternsinjavascript【发布时间】:2022-01-1809:14:57【问题描述】:我试图匹配字符串上的多个正则表达式模式以查找开始和结束索引。letstr="Ia... 查看详情

正则表达式匹配多个字符串但不匹配特定字符串

】正则表达式匹配多个字符串但不匹配特定字符串【英文标题】:Regextomatchseveralstringsbutnotspecificones【发布时间】:2014-10-0814:32:01【问题描述】:我正在使用Perl来搜索和匹配每行中符合条件的字符串,并希望省略包含特定字符串... 查看详情

正则表达式匹配具有两个或多个特殊字符的强密码

】正则表达式匹配具有两个或多个特殊字符的强密码【英文标题】:Regexmatchastrongpasswordwithtwoormorespecialcharacters【发布时间】:2011-06-0722:11:07【问题描述】:我需要使用具有以下要求的javascript正则表达式匹配密码字段:至少15个... 查看详情

正则表达式匹配任意行上的多个 MBCS 字符串

】正则表达式匹配任意行上的多个MBCS字符串【英文标题】:RegextomatchmultipleMBCSstringsonanyline【发布时间】:2013-10-0120:11:46【问题描述】:我正在寻找一个正则表达式来仅匹配C++项目中的MBCS字符串。这些是包含在双引号中的字符串... 查看详情

正则表达式:如何访问一个组的多个匹配项? [复制]

】正则表达式:如何访问一个组的多个匹配项?[复制]【英文标题】:regexes:Howtoaccessmultiplematchesofagroup?[duplicate]【发布时间】:2011-06-3022:42:49【问题描述】:我正在组合一个相当复杂的正则表达式。表达式的一部分匹配诸如“+a... 查看详情

1.3正则表达式和python语言-1.3.6匹配多个字符串(代码片段)

1.3.6匹配多个字符串(2018-05-08)  我们在正则表达式bat|bet|bit中使用了择一匹配(|)符号。如下为在Python中使用正则表达式的方法。importre#bat|bet|bit中使用了择一匹配(|)符号bt=‘bat|bet|bit‘#正则表达式模式:bat、bet、bitm=re.match(b... 查看详情

检查列表是不是有一个或多个与正则表达式匹配的字符串

】检查列表是不是有一个或多个与正则表达式匹配的字符串【英文标题】:Checkifalisthasoneormorestringsthatmatcharegex检查列表是否有一个或多个与正则表达式匹配的字符串【发布时间】:2016-04-0321:10:31【问题描述】:如果需要说if<th... 查看详情

正则表达式,不匹配多个长度不等字符串(代码片段)

正则表达式,不包含多个长度不等字符串。因为多数对于零宽断言检测的讲解中并没有对多个不等长字串做过说明,因此这篇文章在此举例。 由于是长度不相等,所以不能用中括号或的方式,而且不进行消费,所以只能是断... 查看详情