URI正则表达式模式匹配

时间:2012-10-09 15:04:44

标签: python regex pattern-matching

假设我们有以下一系列URI:

答:/ user / a / b / c

B:/ user / a / b / f / d

C:/ user / a / b / e

D:/ user / a / k / r

我需要在python中使用一个匹配除规则B之外的所有规则的正则表达式。因此它应匹配以 / user / a 开头的所有URI,但它应该排除以 d结尾的URI

提前多多感谢!

更新:路径的片段不是单个字符,而是整个单词。例如,d可以是“发送”。

4 个答案:

答案 0 :(得分:3)

如下:

^/user/a/.*[^d]$

将其读作“以/ user / a /开头,然后是任意数量的其他字符,然后是最终字符,不得为d。

答案 1 :(得分:1)

试试这个:

(?!.*\/d)\/user\/a.*

(?!。* / d) - >负向前看断言,基本上说它不以/ d结束

教导男人钓鱼:

http://rubular.com/

输入测试字符串并使用正则表达式:)

答案 2 :(得分:1)

基于Jiman的答案,我的问题的确切解决方案如下:

(?!.*d)\/user/a/.*

请注意,d和a对应于整个单词。因此,一个例子是:

(?!.*send)\/user/myapp/.*

答案 3 :(得分:0)

可能只是更清楚地使用:

a = '/user/a/b/f/d'
b = s.strip('/').split('/')
if b[:2] == ['user', 'a'] and b[-1] != 'd':
    pass # whatever

或者,如果你没有按/分割,那么:

if a.startswith('/user/a') and not a.endswith('d'):
    pass # whatever