2014-04-02 49 views
0

Perl也有一些很好的和简单的函数的返回值设置为一个变量Python的正则表达式得到从字符串返回值

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

这是我尝试了Python和它的工作原理,但没有任何替代这样做的方式?

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

您应该添加'。集团(0)'的'var'行结束 – sshashank124

回答

3

希望这是你在寻找什么:

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

无论您需要什么,你有可能Python re doc一切。

+0

耶右一为我,谢谢 – Pythonizer

0

你不需要做match其次findallfindall会返回一个空列表时,有没有匹配:

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

所以,你可以这样翻译您Perl例如:

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

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

这是你会怎么做Python中的比赛:

import re 

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