2

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

答:/用户/a/b/c

B:/用户/a/b/f/d

C:/用户/a/b/e

D:/用户/a/k/r

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

提前非常感谢!

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

4

4 回答 4

3

怎么样:

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

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

于 2012-10-09T15:09:47.343 回答
1

试试这个:

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

(?!.*/d) -> 否定前瞻断言,基本上是说它不以 /d 结尾

教人钓鱼:

http://rubular.com/

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

于 2012-10-09T15:17:27.760 回答
1

根据Jiman的回答,我的问题的确切解决方案如下:

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

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

(?!.*send)\/user/myapp/.*
于 2012-10-09T15:34:36.763 回答
0

可能更清楚地使用:

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

或者,如果你没有用/'s 分割,那么:

if a.startswith('/user/a') and not a.endswith('d'):
    pass # whatever
于 2012-10-09T15:13:14.757 回答