Regex 用于匹配包含子字符串但不应后跟特定子字符串的行的正则表达式

Regex 用于匹配包含子字符串但不应后跟特定子字符串的行的正则表达式,regex,regex-negation,regex-group,Regex,Regex Negation,Regex Group,在我的例子中,我有多个URL,我需要匹配一些既不包含abc也不包含xyz的URL。例如,给定的URL如下- -安全/api/abc/sometext -安全/api/xyz/sometext -安全/api/required/sometext -不安全/api/sometext/sometext 预期结果 安全/api/required/sometext URL必须以secure/api/开头,我认为这可以解决您的问题 ^secure\/api\/(?!.*(abc|xyz|\/{2,}))

在我的例子中,我有多个URL,我需要匹配一些既不包含
abc
也不包含
xyz
的URL。例如,给定的URL如下-

-安全/api/abc/sometext
-安全/api/xyz/sometext
-安全/api/required/sometext
-不安全/api/sometext/sometext

预期结果

  • 安全/api/required/sometext

URL必须以
secure/api/
开头,我认为这可以解决您的问题

^secure\/api\/(?!.*(abc|xyz|\/{2,})).+\/sometext$
解释

^secure
-它与字符串开头的单词secure匹配

\/
-它匹配文本字符
/

(?!*(abc | xyz | \/{2,}))。+
-这里是
指示负向前看

  -This complete sentence means match any thing except word abc and xyz and '//'.
$
-这表示字符串结束

我认为还有一个版本性能更好

^secure\/api\/(?:(?!.*(abc|xyz|\/{2,})).+)\/sometext$
细节-

?:
将创建一个非捕获组,这将有助于提高性能


p.S-在发布任何问题之前,我认为您应该阅读行为准则,做一些家庭作业,或者展示一些关于指定输入和所需输出以及边缘案例的有效示例。

发布的问题似乎根本不包括解决问题的内容。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请查看并使用。与您的正则表达式匹配的
secure/api/aaa/xyz/sometext
,根据帖子,这是不正确的。@PushpeshKumarRajwanshi是的,感谢您让我知道遗漏,因为问题不清楚,所以我没有考虑边缘情况。只需稍作更改即可轻松实现,这篇文章明确提到了这一点。请参阅此选项,以匹配既不包含abc也不包含来自post的xyz的某些URL。它说,如果输入包含abc或XYZT,则不应接受。谢谢