我想制作匹配的正则表达式 baking.asp nhdjdl.asp hdghgdh.asp hksks.asp
但不是以http:// like
开头的任何文件我怎么能这样做,因为除了这个字符序列
我不知道怎么说答案 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://")]