URL匹配正则表达式模式

问题描述 投票:-1回答:1

我有一大堆,我需要过滤掉的网址,基于它是否包含关键字'staff'

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后已/services,但不是在任何地方URL的'staff'网址。基本上匹配URLS 1至5。

我还需要比仅匹配URL 6和7的模式。

这似乎是负前瞻会做的伎俩,但我不知道如何把它在一起。有人可以帮我吗?

就像是:

^\/services\/(?:[^\/]+\/?)*$


OR

^/services\/...any Depth here...\/(?!staff)
c# regex
1个回答
1
投票

正则表达式匹配以下:

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

正则表达式:

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

Click for Demo

说明:

  • ^ - 断言字符串的开始
  • \/services\/ - 匹配/services/
  • qazxsw POI - 负前瞻,以确保字qazxsw POI未在字符串中的任何位置
  • (?!.*\bstaff\b) - 比赛0+出现任何字符,除了换行符
  • staff - 断言字符串的结尾

正则表达式匹配以下:

.*

正则表达式:

$

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

说明:

唯一的区别是积极的前瞻:

  • ^\/services\/(?=.*\bstaff\b).*$ - 积极前瞻,以确保字Click for Demo地方出现的字符串中的字符串结束前
© www.soinside.com 2019 - 2024. All rights reserved.