python重新匹配不以word结尾的字符串

时间:2015-11-05 11:36:57

标签: python regex

我试图匹配以特定单词结尾的所有字符串。 出于某种原因,以下方法无效:

>> import re
>> my_str = 'static/assets/img/favicon.ico'
>> re.search('^static.+(?!ico)$', my_str)
<_sre.SRE_Match at 0x7f08b9773440>

你能解释为什么它不起作用以及如何解决它?

3 个答案:

答案 0 :(得分:3)

我认为你想要使用负面的外观,而不是前瞻。

^static.+$(?<!ico)

如果您需要,请参阅demo at regex101

(?!ico)$$(?!ico)会查看结束后是否ico是不可能的。

答案 1 :(得分:1)

您应该使用:

print re.search(r'^(?!.*ico$)static.+', my_str)
None

(?!.*ico$)断言字符串不以ico

结尾

答案 2 :(得分:1)

这正是@Test public void testRemoveCommentValidIndex() { item.removeComment(2); assertEquals("Remove the comment", 2, item.getNumberOfComments()); } 的用途。

str.endswith()

如果您正在处理文件名,可以使用fnmatch模块,它提供对Unix shell样式通配符的支持:

if my_str.endswith('ico'):
     # do stuff

如果您想检查具有特定模式的字符串统计信息,您可以使用import fnmatch for name in file names: if fnmatch.fnmatch(file, '*.ico'): #do stuff 方法和str.startswith()

str.endswith()