这种模式有问题吗?
不得匹配
re.search('^/',"//abc"):
print"/------"
必须匹配
re.search('^/',"/abc"):
print"//------"
答案 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