我想使用字符"&";,但是只有在不存在"零"的情况下才应该发生分裂\">
字符串:
/10/102-/ABC083.013/11/201201/20/83/30/463098194/32/7.7/40/0:20
Regex:
/*(?<!\)[^/]*/*(?<!\)[^/]*
预期结果:
/10/102-/ABC083.013
/11/201201
/20/83
/30/463098194
/32/7.7
/40/0:20
但是用我的正则表达式我得到:
/10/102-
/ABC083.013/11
/201201/20
/83/30
/463098194/32
/7.7/40
/0:20
在线正则表达式示例
问题在于第一组"/10/102-\/ABC083.013";,它不识别字符串"0"\/"到第一组。我不知道如何优化/更改我的正则表达式,使其正确识别第一组。
另一个选项是匹配2倍正斜杠,并且只有在前面有时才匹配
/
(?:/(?:[^/]|(?<=\)/)+){2}
解释
(?:
非捕获组/
匹配/
(?:
非捕获组[^/]
匹配除/
之外的任何字符|
或(?<=\)/
匹配前面没有的
/
)+
关闭组并重复1+次以匹配除/
之外的至少1个字符
){2}
合组重复2次
Regex演示
或者一个稍微高效的展开版
(?:/[^\/]+(?:\.[^\/]*)*){2}
解释
(?:
非捕获组/[^\/]+
匹配/
,然后是除和
/
之外的任何字符的1+倍(?:
非捕获组\.[^\/]*
匹配一个转义字符,后跟0倍以上除和
/
之外的任何字符
)*
关闭组并重复0+次(以防未出现转义字符(
){2}
合组重复2次
Regex演示
您可以使用
(?:/[^\/]+){2}(?:\/[^\/]+)?
请参阅regex演示详细信息:
(?:/[^\/]+){2}
-/
-/
字符[^\/]+
-除/
和之外的一个或多个字符
(?:\/[^\/]+)?
-可选出现:\
-一个字符
/
-一个/
字符[^\/]+
-除/
和之外的一个或多个字符