Perl有一些很好的功能可以将返回值设置为变量
if($string =~ /<(\w+)>/){
$name = $1;
}
这是我为python尝试过的并且它有效,但有没有其他方法可以做到这一点?
if re.match('\s*<\w+>.+', string):
var = re.findall('>(\w+)<', string)
答案 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
后跟findall
,findall
会在没有匹配时返回空列表:
>>> 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()