如何在此字符串中输入数字(以下示例中的 20 )?
string = """<option value="full_review">Detailed review (Up to $20.00)</option>"""
我用过
detailint = re.findall("""value="full_review">Detailed review (Up to $(.*))</option>""", bidsrc)
但它不会让我流汗!任何技巧?
答案 0 :(得分:3)
假设bidsrc = string
,您需要同时转义$
和()
,因为它们对正则表达式编译器具有特殊含义。您还希望使用.*?
或更好[\d.]+
来匹配实际金额。
r"""value="full_review">Detailed review \(Up to \$([\d.]+)\)</option>"""
答案 1 :(得分:1)
非常简单。
>>> import re
>>> s = "Detailed review (Up to $20.00)"
>>> re.findall("(\d+)\.",s)
['20']
我确定你已经检查过,但subject上的python文档非常有帮助。另请查看python使用的特殊字符,例如$
,(
和)
。
为了更详细地解释,在上面的正则表达式中,(\d+)
是捕获组,它在一段时间之前捕获一个或多个数字(此处,转义为\.
)。这就是为什么它匹配20
而不是00
。
答案 2 :(得分:1)
请记住&#39; $&#39;在正则表达式中有特殊含义,因此&#39;。&#39;,&#39;(&#39;,&#39;)&#39;,&#39; *&#39;和许多其他人。如果你不想让它们被特别处理,你必须逃避(例如&#39; \ $&#39;)
答案 3 :(得分:0)
试试这个
import re
string = '<option value="full_review">Detailed review (Up to $20.00)</option>'
finded = re.findall("""value="full_review">Detailed review \(Up to \$([\d.].*)\)</option>""",string)
print finded
答案 4 :(得分:0)
import re
s = "Detailed review (Up to $20.00)"
re.findall("\$\d+\.\d+",s)[0][1:]
给你20.00(包括小数)