Python正则表达式从字符串中获取返回值

时间:2014-04-02 10:19:33

标签: python regex

Perl有一些很好的功能可以将返回值设置为变量

if($string =~ /<(\w+)>/){
     $name = $1;
}

这是我为python尝试过的并且它有效,但有没有其他方法可以做到这一点?

if re.match('\s*<\w+>.+', string):
    var = re.findall('>(\w+)<', string)

3 个答案:

答案 0 :(得分:3)

希望这就是你要找的东西:

string = "id: 10"
match = re.search("id: (\d+)", string)
if match:
    id = match.group(1)
    print id

无论您需要什么,您都可能拥有Python re doc中的所有内容。

答案 1 :(得分:0)

您无需执行match后跟findallfindall会在没有匹配时返回空列表:

>>> string = 'sdafasdf asdfas '
>>> var = re.findall('>(\w+)<', string)
>>> var
[]

因此,您可以像这样翻译Perl示例:

try: name = re.findall('>(\w+)<', string)[0]
except IndexError: name = 'unknown'

答案 2 :(得分:0)

我不认为你的正则表达式会匹配任何东西。他们俩互相矛盾。

这是你在Python中进行匹配的方法:

import re

string = "string"
matches = re.match('(\w+)', string)
print matches.group()