Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python re.search()字符串末尾的精确比较_Python_Regex - Fatal编程技术网

Python re.search()字符串末尾的精确比较

Python re.search()字符串末尾的精确比较,python,regex,Python,Regex,正在尝试对字符串结尾执行精确的字符串比较: re.search(r'%s' % name1, name2, re.IGNORECASE) 因此,如果name1=“local/foo”和name2=“foo”语句将返回true 但是,对于name1=“foo”和name2=“foo bar” 如何仅匹配结尾?使用$将搜索定位到结尾: re.search(r'%s$' % name1, name2, re.IGNORECASE) 您可能希望使用re.escape()来确保name1中的元字符不会

正在尝试对字符串结尾执行精确的字符串比较:

re.search(r'%s' % name1, name2, re.IGNORECASE)
因此,如果
name1=“local/foo”
name2=“foo”
语句将返回true

但是,对于
name1=“foo”
name2=“foo bar”

如何仅匹配结尾?

使用
$
将搜索定位到结尾:

re.search(r'%s$' % name1, name2, re.IGNORECASE)
您可能希望使用
re.escape()
来确保
name1
中的元字符不会被解释为正则表达式模式:

re.search(r'%s$' % re.escape(name1), name2, re.IGNORECASE)

使用
$
将搜索定位到结尾:

re.search(r'%s$' % name1, name2, re.IGNORECASE)
您可能希望使用
re.escape()
来确保
name1
中的元字符不会被解释为正则表达式模式:

re.search(r'%s$' % re.escape(name1), name2, re.IGNORECASE)
另一种选择:

name1.lower().endswith(name2.lower())
另一种选择:

name1.lower().endswith(name2.lower())

Python 3.4上还有
re.fullmatch
。它使用
\Z
而不是
$
,因此有一个更好的默认值。

在Python 3.4上还有
re.fullmatch
。这将使用
\Z
而不是
$
,因此有一个更好的默认值。

@klashxx:取决于输入,但是是的,当您的输入可以包含多行并且您确实希望匹配整个输入字符串的结尾时,则
\Z
是更好的选择。@klashxx:取决于输入,但是是的,如果您的输入可以包含多行,并且确实希望匹配整个输入字符串的结尾,则
\Z
是更好的选择。muuuch优于re。muuuch优于re。