URL匹配正则表达式模式

时间:2019-01-22 02:08:54

标签: c# regex

根据是否包含关键字36

,我需要过滤一堆网址
'staff'

我想创建一个正则表达式模式来匹配所有在主机URL之后带有1. /services 2. /services/EarNoseThroat 3. /services/EarNoseThroat/Audiology 4. /services/EarNoseThroat/Audiology/CochlearImplant 5. /services/BehavioralHealth/Clinic 6. /services/BehavioralHealth/Clinic/staff 7. /services/BehavioralHealth/Clinic/staff/Jamie-Hudgins 的URL,但不匹配URL中任何位置的/services。基本上将网址1匹配到5。

我还需要一种模式,不仅仅是匹配URL 6和7。

除了我不知道如何将其组合在一起之外,否定的前瞻似乎可以解决问题。有人可以帮我吗?

类似:

'staff'

1 个答案:

答案 0 :(得分:1)

正则表达式匹配以下内容:

/services
/services/EarNoseThroat
/services/EarNoseThroat/Audiology
/services/EarNoseThroat/Audiology/CochlearImplant
/services/BehavioralHealth/Clinic  

正则表达式:

^\/services\/(?!.*\bstaff\b).*$

Click for Demo

说明:

  • ^-断言字符串的开头
  • \/services\/-匹配/services/
  • (?!.*\bstaff\b)-前瞻,以确保单词staff不会出现在字符串中的任何地方
  • .*-匹配0+次出现的除换行符以外的任何字符
  • $-声明字符串的结尾

正则表达式匹配以下内容:

/services/BehavioralHealth/Clinic/staff
/services/BehavioralHealth/Clinic/staff/Jamie-Hudgins

正则表达式:

^\/services\/(?=.*\bstaff\b).*$

Click for Demo

说明:

唯一的区别是正面的前瞻性:

  • (?=.*\bstaff\b)-正向查找,以确保单词staff出现在字符串末尾之前的某个位置