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

时间:2018-11-28 04:41:39

标签: regex regex-negation regex-group

对于我来说,我有多个网址,我需要匹配一些既不包含abc也不包含xyz的网址。例如,给定的网址如下-

 -安全/ api / abc / sometext
 -安全/ api / xyz / sometext
 -安全/ api /必填/ sometext
 -不安全/ api / sometext / sometext

预期结果

  • secure / api / required / sometext

网址必须以secure/api/

开头

1 个答案:

答案 0 :(得分:0)

我认为这可以解决您的问题

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

说明

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

\/-它与文字字符/相匹配。

(?!.*(abc|xyz|\/{2,})).+-此处?!表示负面的提前预测。

  -This complete sentence means match any thing except word abc and xyz and '//'.

$-这表示字符串的结尾。

我认为这是另一个版本,它将表现更好

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

详细信息-

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

enter image description here

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