2017-09-08 15 views
0

だから、私は%(...)間で2つの番号を取得しようとしましたが、それが働いて、エラーを返すされていないのです。multiple repeatPython。正規表現。無効な正規表現:複数の繰り返し

import re 

# done 
def percentage(a): 
    if re.match(r"^[-+]?[0-9]*\.?[0-9]+\s*%$", a): 
     return str(float(a[:-1])/100) 
    else: 
     return a 

# broken 
def percentage_of2(a): 
    if re.match(r"^%\((.?*)\).*$", a): 
     return str(float(a[:-1])) # test 
    else: 
     return a 

msg = "msg 1+2,65%,100%,%(50,100),%(40,90)" 
prc2 = ",".join(map(percentage_of2, re.split("\s*,\s*|\s+",msg))) 

がどのように場合は、それを修正することができますか?

+1

'を変更しました。?*'意味がありません。次の正規表現

re.match(r"^%\((.*?)\).*$", a) 

を試してみて、何をやろうとしていますか? –

+0

@AlexHall私は%(...)の間に2つの数字を取得しようとすると、私は正規表現では悪いです。 :( – jcommander

答えて

0

はあなたが順序.*?

+0

は動作しません。 "%()' "の間に2つの数値を返し、100で割る必要があります。 – jcommander