我试图匹配以特定单词结尾的所有字符串不。 出于某种原因,以下方法无效:
>> import re
>> my_str = 'static/assets/img/favicon.ico'
>> re.search('^static.+(?!ico)$', my_str)
<_sre.SRE_Match at 0x7f08b9773440>
你能解释为什么它不起作用以及如何解决它?
答案 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()