Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex pattern跳过一个模式并匹配另一个模式_Regex - Fatal编程技术网

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)/