Python字符串必须匹配正则表达式的开头而不是结束

时间:2017-02-14 14:59:38

标签: python regex grep

我发现这种行为有点奇怪:

pattern = re.compile(r"test")
print pattern.match("testsda") is not None
True
print pattern.match("astest") is not None
False

因此,当字符串与其末尾的模式不匹配时,一切都很好。但是当字符串与开头的模式不匹配时,字符串就不再与模式匹配了。

相比之下,grep在两种情况下都成功:

echo "testsda" | grep  test
testsda
echo "adtest" | grep  test
adtest

你知道为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

re.match旨在仅匹配字符串的开头。作为docs州:

  

Python提供了两种基于常规的基本操作   表达式:re.match()仅在开头检查匹配项   字符串,而re.search()检查匹配中的任何位置   string(这是Perl默认执行的操作)。

如果你使用re.search,你应该没问题:

import re

pattern = re.compile(r"test")
print pattern.search("testsda") is not None
print pattern.search("astest") is not None

打印

True
True