Python RegEx不匹配,但regexr.com具有相同的表达式

时间:2018-02-21 01:36:22

标签: python regex

我尝试使用以下代码来匹配文本\ test((?P [0-9] {4})。

使用: https://regexr.com/

它匹配文本,但是在python中它无法匹配具有相同表达式的相同文本:

[^a-z0-9\/]

这是两个条件的代码。我不确定为什么regEx会在regexr.com中匹配,但不会在python中匹配,除非有一个数字符号。

import os
import re

#no work
if re.match("[^a-z0-9\/]", "test/(?P<year>[0-9]{4})"):
    print "match"
else:
    print "no match"

#works
if re.match("[^a-z0-9\/]", "#test/(?P<year>[0-9]{4})"):
    print "match"
else:
    print "no match"

1 个答案:

答案 0 :(得分:1)

在您的第一个代码段中:

if re.match("[^a-z0-9\/]", "test/(?P<year>[0-9]{4})"):
    print "match"
else:
    print "no match"

从文本开头开始应用模式[^a-z0-9\/]。因此,它失败了,因为第一个字母是t,它与模式不匹配。如果您只想匹配与原始模式对应的单个字符,则可以尝试以下模式:

.*[^a-z0-9\/].*

此模式将匹配您的两个示例字符串。如果您打算使用其他模式,请编辑您的问题并为我们提供更多逻辑。