2016-05-17 201 views
0

提取$和%值,比方说从字符串字符串正则表达式从字符串

str1 = "4.1% Cash Back "

str2 = "$44.2 miles "

我想提取两个 “4.1%” 和 “44.2 $”。什么是最好的解决方案。我尝试了几种方法,但并不顺利。

我试过以下的正则表达式:

pattern1 = r'(\d+\.\d+*%)' 
    pattern2 = r'$(\d+\.\d+*)' 
+3

您可能需要转义''''和'%'符号, 'r'(\ $ \ d + \。\ d + *)'' –

回答

3

逃生$\

pattern = r'\d+(\.\d+)?%|\$\d+(\.\d+)?' 

demo

+0

@ rock321987,你是对的! – Fabricator

+0

@Fabricator如果没有小数,怎么样? 它不接受没有小数的数字 – CodeNinja101

+0

@sudobomb,通过添加'?'使得'(\。\ d +)'可选 – Fabricator

0

简单使用split

>>> str1 = "4.1% Cash Back " 
>>> str1.split()[0] 
'4.1%' 
>>> str2 = "$44.2 miles " 
>>> str2.split()[0] 
'$44.2' 
0

不需要逃避'。'标志 和你应该逃避$符号。 使用模式:

pattern1 = r'\d+.\d+%' 
pattern2 = r'\$\d+.\d+'