我有以下字符串:
string = "x OPTIONAL() y z(..., ...)"
OPTIONAL()实际上是可选的,因此字符串也可以是:
string = "x y z(..., ...)"
使用正则表达式,我要匹配字符串,直到找到以下第一个字符为止:
([{;=,
请注意,OPTIONAL()包含上述字符之一,但搜索不应在OPTIONAL(。)处停止。
所以我想拥有:
x OPTIONAL() y z
或者:
x y z
我当前正在使用:
re.search("[ \t\n\r\f\v]*(OPTIONAL\(\))?([^([{;=,]+)", string)
比赛正确地停在:
x y z
当OPTIONAL()不在字符串中时。
但是,在字符串中使用OPTIONAL()时,匹配将在以下位置停止:
x OPTIONAL
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用
^(?:OPTIONAL\(\)|[^([{;=,])+
请参见regex demo
详细信息
^
-字符串的开头(?:
-non-capturing group的开头将与
OPTIONAL\(\)
-OPTIONAL()
suibstring |
-或[^([{;=,]
-与其他(
,[
,{
,;
,=
其他字符匹配的negated character class ,,
)+
-一次或多次。