为什么我的RegExp在RegExr中匹配,而在Python中却不匹配?

时间:2015-07-01 15:07:49

标签: python regex

regexp = re.compile('[A-Z]\\d{4}')
prefix = regexp.match("\"O1533_FOO\" INTEGER NOT NULL ,")

前缀是无,但我希望它是" O1533"。

当我使用基于网络的工具http://regexr.com/时,它可以正常工作。

http://regexr.com/3bag5

我尝试使用不同数量的\来逃避\,我也尝试分隔/ s。无法让它发挥作用。

请问一些RegExp专家可以修复我的表达吗?

1 个答案:

答案 0 :(得分:5)

因为您应该将match替换为search

match尝试从头开始匹配字符串,\"O1533_FOO\" INTEGER NOT NULL ,不会以匹配[A-Z]的内容开头,因此会失败。

请参阅search() vs. match()

  

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