如果开头只有一个斜杠,则模式必须成功

时间:2015-07-10 15:32:36

标签: python regex python-2.7

这种模式有问题吗?

不得匹配

re.search('^/',"//abc"):
print"/------"

必须匹配

re.search('^/',"/abc"):
print"//------"  

2 个答案:

答案 0 :(得分:5)

如果您想在开头匹配一个/

re.search('^/[^/]',"//abc")

^/[^/]'将匹配以/开头的字符串,但前提是/后面没有/^ []否定匹配因此,如果您想忽略多个字符,请说/? [您将创建集合[^/?],以便同时"/?abc"和{{} 1}}不匹配。

您正在匹配以"//abc"开头的任何字符串,因此逻辑上它与两者匹配。

如果你想得到整个字符串而不只是看看你是否得到了匹配:

/

如果您想要更具体的匹配,请在re.search('^/[^/].*',"/abc")

之后添加您想要的任何内容

答案 1 :(得分:2)

最简单的是否定/在第二个角色上。注意:^的含义是"在字符串"的开头。在字符范围[...]中,它表示除了那些字符。

import re
for s in ["//abc","/abc"]:
    #[^/] will match anything not a '/'
    pat = "^/[^/]"
    hit = re.search(pat, s)
    print "search(%s, %s)=>%s" % (pat,s,bool(hit))

输出:

search(^/[^/], //abc)=>False
search(^/[^/], /abc)=>True