首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python正则表达式有关问题:匹配特定串集合之外的串如何写

2014-03-30 
python正则表达式问题:匹配特定串集合之外的串怎么写我需要些一个正则表达式,它要匹配除了前缀为我指定的4

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/).*$'


[解决办法]
引用:
引用:Python code?1p = r'^(?!/doc/
[解决办法]
/info/
[解决办法]
/articles/
[解决办法]
/forum/).*$'
我试了,可以解决问题。
但是我需要一个.*匹配其他的字符,以使得表达式能够匹配东西。
那我用:
Python code?1234567p1=r'^(?!/doc/
[解决办法]
/info/
[解决办法]
/articles/
[解决办法]
/foru……



re.match(p1, 'doc') # yes
re.match(p2, 'doc') # no


(?!...)匹配的是一个点,不会匹配具体的字符串

热点排行