来自字符串:
l="\tsome string in line 1\n\tcmd: DIR @1332243996 (2012.03.20 12:46:36) state op:29 cfg:0\n\tline 3 some other string"
我想提取“DIR”,因此我创建了正则表达式:
j = re.search(r'cmd: \w+', l)
但是当我这样做时:
print j.group()
我得到了:
cmd: DIR
我该怎么办,只能获得“DIR”,而不是“cmd:”,例如:
print j.group()
DIR
所有答案的答案
答案 0 :(得分:5)
您需要在正则表达式中捕获DIR组:
j = re.search(r'cmd: (\w+)', l)
然后在检索时引用它:
print j.group(1)
答案 1 :(得分:4)
让断言背后的正面看法
j = re.search(r'(?<=cmd: )\w+', l)
以?<=
开头的组是断言背后的肯定,这意味着,它不匹配,但它确保内容在您想要匹配的模式之前。
答案 2 :(得分:4)
您需要在要捕获的部分周围放置一个组(即括号):
j = re.search(r'cmd: (\w+)', l)
k = re.search(r'cmd:\s*(\w+)', l)
print j.group(1)
您可能更喜欢使用k
版本,它在“cmd:”和后面的内容之间处理可变数量的空格。
答案 3 :(得分:-1)
<强> RE-RE-FIXED 强>
这是正则表达式:cmd:\s([\w//\\]+)\s@[0-9]+\s
提示:匹配cmd: somedir @12312312
以及cmd: another/dir @123123