2014-04-02 48 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()