我编写了一个函数来验证给定字符串中是否存在特定模式:
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)))
答案 0 :(得分:2)
您的模式在字符串的开头查找一个字母(大写或小写),后跟冒号,反斜杠,然后是另一个不是反斜杠的字符。
您的测试输入不会以此非反斜杠字符结尾,因此与模式不匹配。
一种可能的模式适应是:
^[a-zA-Z]:\\(?:$|[^\\])
^[a-zA-Z]:\\\\(?:$|[^\\\\])