python正则表达式问题:匹配特定串集合之外的串怎么写
我需要些一个正则表达式,它要匹配除了前缀为我指定的4个串之外的所有串,这个表达式要怎么写?谢谢!
例如:
我希望排除的串前缀为:“/doc/”,“/info/”,“/articles/”,“/forum/”
这样的串我希望匹配:
/int/abc/123
/xyz/
/abc1234
/docs/
这样的串我希望排除:
/doc/int
/info/
/forum/a/b/c/e
我知道可以间接解决(匹配希望排除的模式,如果匹配失败,极为最初希望匹配的串),表达式可以写成:
str='^/(doc|info|articles|forum)/'
re.match(str,data)==None
但是我希望用直接的方式解决这个问题。
最初以为[^...]可以用,但是它貌似是针对字符的(匹配某些字符之外所有的串),有没有大大知道什么办法可以解决匹配某些子串之外所有的串的办法?
谢谢啦。 python 正则表达式
[解决办法]
p = r'^(?!/doc/
[解决办法]
/info/
[解决办法]
/articles/
[解决办法]
/forum/).*$'
re.match(p1, 'doc') # yes
re.match(p2, 'doc') # no