我有一大堆,我需要过滤掉的网址,基于它是否包含关键字'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)
正则表达式匹配以下:
/services
/services/EarNoseThroat
/services/EarNoseThroat/Audiology
/services/EarNoseThroat/Audiology/CochlearImplant
/services/BehavioralHealth/Clinic
正则表达式:
^\/services\/(?!.*\bstaff\b).*$
说明:
^
- 断言字符串的开始\/services\/
- 匹配/services/
(?!.*\bstaff\b)
- 比赛0+出现任何字符,除了换行符staff
- 断言字符串的结尾正则表达式匹配以下:
.*
正则表达式:
$
/services/BehavioralHealth/Clinic/staff
/services/BehavioralHealth/Clinic/staff/Jamie-Hudgins
说明:
唯一的区别是积极的前瞻:
^\/services\/(?=.*\bstaff\b).*$
- 积极前瞻,以确保字Click for Demo地方出现的字符串中的字符串结束前