匹配一些字符串

时间:2011-06-27 01:38:34

标签: regex

我想制作匹配的正则表达式 baking.asp nhdjdl.asp hdghgdh.asp hksks.asp

但不是以http:// like

开头的任何文件

http://hhhdjg.asp

我怎么能这样做,因为除了这个字符序列

我不知道怎么说

3 个答案:

答案 0 :(得分:3)

否定先行断言。

>>> re.match('(?!http://).*\\.asp', 'http://foo.asp')
>>> re.match('(?!http://).*\\.asp', 'foo.asp')
<_sre.SRE_Match object at 0x7f34f8432920>

答案 1 :(得分:0)

如果您还希望排除以ftp://等开头的字符串:

>>> re.match('[^/]*\.asp', '/tmp/foo.asp')
>>> re.match('[^/]*\.asp', 'http://foo.asp')
>>> re.match('[^/]*\.asp', 'ftp://foo.asp')
>>> re.match('[^/]*\.asp', 'foo.asp')
<_sre.SRE_Match object at 0x2abe856856b0>

答案 2 :(得分:0)

我认为最好的解决方案是找到所有匹配'* .asp'的模式,并从中抛出任何以“http:”开头的结果。因为你不知道正则表达式(并且可能是你的队友不喜欢不管怎样,如果你有它们,非正则表达式解决方案将是最清晰的。

例如:

[s for s in list_of_strings if s.endswith(".asp") and not s.startswith("http://")]