假设我们有以下一系列 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 可以是“发送”。
假设我们有以下一系列 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 可以是“发送”。
怎么样:
^/user/a/.*[^d]$
将其读作“以 /user/a/ 开头,然后是任意数量的其他字符,然后是最后一个字符,不能是 d。
试试这个:
(?!.*\/d)\/user\/a.*
(?!.*/d) -> 否定前瞻断言,基本上是说它不以 /d 结尾
教人钓鱼:
输入测试字符串并使用正则表达式:)
根据Jiman的回答,我的问题的确切解决方案如下:
(?!.*d)\/user/a/.*
请注意,d 和 a 对应于整个单词。因此,一个例子是:
(?!.*send)\/user/myapp/.*
可能更清楚地使用:
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