我有以下字符串:find me String1\String2\String3
,所以我想捕获string1,2和3(如果它们存在)。字符串3可以是可选的。
到目前为止,我能做的是:(?<=find me)\s(\\?[\w]+\\?){1,3}
,我的假设是:
find me
但不应该被捕获\
作为字符串开始时的可选字符,跟在它后面的一个单词以及它末尾的\
,也是可选的,它可以出现1到3次。< / LI>
我的正则表达式模式有什么问题?
答案 0 :(得分:1)
假设您的正则表达式支持\G
,您可以使用此正则表达式分别捕获所有3个字符串:
(?<=find me |(?<!^)\G\\)\w+
\G
在上一场比赛结束或第一场比赛的字符串开头处断言位置。
\G
匹配上一个匹配的行开头或结尾的位置。在这种情况下,我也有一个负向的后视(?<!^)
,这意味着不匹配行开始,因此它使\G
仅匹配前一个匹配结束的位置。对于您的示例,它匹配两次,即String1
的结尾和String2
的结尾。