正则表达式搜索不起作用

时间:2016-02-10 10:29:32

标签: python regex python-2.7

我编写了一个函数来验证给定字符串中是否存在特定模式:

import re
def has_pattern(string, regex):
    if string and re.compile(regex).search(string) is not None:
        return True
    return False

但由于某些原因,我的测试未显示预期结果:

# for absolute path on windows
pattern = '^[a-zA-Z]:\\\\[^\\\\]' # actual regex: [a-zA-Z]:\\[^\\]
path = 'a:\\' # for this result should be 'True'
print('Pattern: \'{0}\''.format(pattern))
print('Result: {0}'.format(has_pattern(path, pattern)))

1 个答案:

答案 0 :(得分:2)

您的模式在字符串的开头查找一个字母(大写或小写),后跟冒号,反斜杠,然后是另一个不是反斜杠的字符。

您的测试输入不会以此非反斜杠字符结尾,因此与模式不匹配。

一种可能的模式适应是:

  • 正则表达式:^[a-zA-Z]:\\(?:$|[^\\])
  • 格式化为python字符串:^[a-zA-Z]:\\\\(?:$|[^\\\\])