2024-09-28 01:30:34 发布
网友
我有这个输入,name&cp\u name(,10)
我的要求是
注意:这三个可以用一个或多个空格隔开
(?P<field>[^\s].+?)\s*(?P<col>[&][a-zA-Z_]+)?\s*(?P<pos>\(.*?\))?
我在python中尝试的正则表达式 我希望有一场比赛有3个被抓获的小组
我得到的是2根火柴
第一场比赛:
第二场比赛:
对于字段组,可以先匹配非空白字符,然后再匹配任何非空白字符。你知道吗
因为字段组可以包含空格,所以可以重复这一点,并确保单词不以&开头或以左括号和右括号开头。你知道吗
&
^(?P<field>(?![^\s&]*&)\S+(?: (?!\([^)]*\)|[^&\s]*&)\S+)*)\s*(?P<col>&[a-zA-Z_]+)?\s*(?P<pos>\(.*?\))?$
^
(?P<field>
(?![^\s&]*&)\S+
[^\s&]\S+
(?:
(?!\([^)]*\))\S+
(
)
)*
\s*(?P<col>&[a-zA-Z_]+)?
col
\s*(?P<pos>\(.*?\))?
pos
Regex demo
请注意,可以省略[&]周围的方括号
[&]
对于字段组,可以先匹配非空白字符,然后再匹配任何非空白字符。你知道吗
因为字段组可以包含空格,所以可以重复这一点,并确保单词不以
&
开头或以左括号和右括号开头。你知道吗^
字符串开头(?P<field>
命名组字段(?![^\s&]*&)\S+
断言右边的内容不包含&
,然后匹配1+乘以非空白字符[^\s&]\S+
不匹配空白字符或&
后跟匹配1+乘以非空白字符(?:
非捕获组(?!\([^)]*\))\S+
断言右边的不是(
…)
,然后匹配1+倍的非空白字符)*
关闭非捕获组,重复0+次)
关闭组字段\s*(?P<col>&[a-zA-Z_]+)?
匹配可选的col
组\s*(?P<pos>\(.*?\))?
匹配可选的pos
组Regex demo
请注意,可以省略
[&]
周围的方括号相关问题 更多 >
编程相关推荐