尝试对字符串结尾进行精确的字符串比较:
re.search(r'%s' % name1, name2, re.IGNORECASE)
因此,如果name1 = "local/foo"
和name2= "foo"
语句将返回true。
但是,上述测试对name1 = "foo"
和name2 = "foo-bar"
返回true
我怎样才能匹配两端?
答案 0 :(得分:3)
使用$
将搜索锚定到最后:
re.search(r'%s$' % name1, name2, re.IGNORECASE)
您可能想要使用re.escape()
来确保name1
中的元字符不被解释为正则表达式模式:
re.search(r'%s$' % re.escape(name1), name2, re.IGNORECASE)
答案 1 :(得分:2)
另一种选择:
name1.lower().endswith(name2.lower())
答案 2 :(得分:1)
Python 3.4上还有re.fullmatch
。这比\Z
使用$
,因此有更好的默认值。