Regex 在正则表达式中,我可以删除字符串中的位,但仍然可以得到常量分组?
我有一个字符串,看起来像这样:Regex 在正则表达式中,我可以删除字符串中的位,但仍然可以得到常量分组?,regex,preg-match,regex-group,Regex,Preg Match,Regex Group,我有一个字符串,看起来像这样: c1v1c2v2c3v3c4v4.zip 其中C1,C2等是常数,我可以使用其他正则表达式来识别,V1,V2等是变量,可以是任何东西。目前,我有一个正则表达式,它为我将整个字符串放入好的组中-例如“C1”在组1中,“V1”在组2中等等- (C1)(.*?)(C2)(.*?)(C3)(.*?)C4(.*?)(.zip) 但我想知道如果我要删除字符串的一部分,是否有办法保留这些组/匹配,例如: c1v1c2v2c4v4.zip1
c1v1c2v2c3v3c4v4.zip
其中C1,C2等是常数,我可以使用其他正则表达式来识别,V1,V2等是变量,可以是任何东西。目前,我有一个正则表达式,它为我将整个字符串放入好的组中-例如“C1”在组1中,“V1”在组2中等等-
(C1)(.*?)(C2)(.*?)(C3)(.*?)C4(.*?)(.zip)
但我想知道如果我要删除字符串的一部分,是否有办法保留这些组/匹配,例如:
c1v1c2v2c4v4.zip1
如果不可能,请告诉我:)
非常感谢 您可以使用这个正则表达式,它使每组常量和变量都是可选的
((C1)(.*?))?((C2)(.*?))?((C3)(.*?))?((C4)(.*?))?(.zip)
如果您想保留组1和组2,并在组3中捕获
.zip
,您可以尝试使用
这将符合:
匹配捕获组中的C后跟数字(C\d)
捕获组(
匹配任何字符零次或多次非贪婪*?
正向前瞻,断言后面的是C后跟数字或字符串末尾的.zip(?=C\d | \.zip)
$
)
或|
在组中捕获(\.zip$)
,并断言行的结尾.zip
(?:(C\d)|(V\d)(?:\.zip))
?看见