python中的简单正则表达式

时间:2012-03-20 13:25:11

标签: python regex

来自字符串:

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

所有答案的答案

4 个答案:

答案 0 :(得分:5)

您需要在正则表达式中捕获DIR组:

j = re.search(r'cmd: (\w+)', l)

然后在检索时引用它:

print j.group(1)

答案 1 :(得分:4)

让断言背后的正面看法

j = re.search(r'(?<=cmd: )\w+', l)

here on Regexr

?<=开头的组是断言背后的肯定,这意味着,它不匹配,但它确保内容在您想要匹配的模式之前。

答案 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