Regex pattern跳过一个模式并匹配另一个模式
我有以下字符串值:Regex pattern跳过一个模式并匹配另一个模式,regex,Regex,我有以下字符串值: https:///path/object.svc/path1/path2|https:///path/xyz.svc/path3/path4. object.svc在字符串中始终是固定的,但是部分xyz.svc是可变的。例如,在第二种情况下,字符串值为 https:///path/object.svc/path1/path2|https:///path/abcd.svc/path3/path4. 我希望有一个通用的正则表达式模式可以使用,这样我就可以跳过对象.svc,只选
https:///path/object.svc/path1/path2|https:///path/xyz.svc/path3/path4.
object.svc
在字符串中始终是固定的,但是部分xyz.svc
是可变的。例如,在第二种情况下,字符串值为
https:///path/object.svc/path1/path2|https:///path/abcd.svc/path3/path4.
我希望有一个通用的正则表达式模式可以使用,这样我就可以跳过对象.svc
,只选择xyz.svc
,abcd.svc
等。基本上是一个正则表达式,我想在其中查找所有对象.svc
而不是对象.svc
有人对如何做到这一点有什么建议吗?如果你不使用Javascript,你可以使用回头看看
(?类似:\w+(?)
例如,如果仍然希望匹配包含对象(如“sobject”)的单词,则可以将\b
添加到后面的表达式中,如:\w+(?这将强制只匹配单词object.svc
请注意,\w
将匹配[a-zA-Z0-9],如果仅排除数字或排除
是必要的,您可能需要使用[a-zA-Z0-9]
正如@alanmore正确强调和评论的那样:
向前看也同样有效:\b(?!object\.svc\b)\w+\.svc\b
。但是,正如您所说,我们不知道\w+
是否正确,这意味着\b
可能也不正确。最好使用周围的斜线来锚定匹配,并使用捕获组来检索它:/((?!object\.svc/)[^/]+.svc)/
您使用的是哪种语言?可用的正则表达式模式各不相同……前瞻性也同样适用:\b(?!object\.svc\b)\w+\.svc\b
。但是,正如您所说,我们不知道\w+
是否正确,这意味着\b
可能也不正确。最好使用周围的斜线来锚定匹配,并使用捕获组来检索它:/(?!object\.svc/)[^/]+\.svc)/