我目前正在使用正则表达式来匹配某行,例如:
(.0025 = 625 dollars per contract)
我有一个用于类似表达式的正则表达式,可以完成工作。但是,我想知道是否有更好的实现:
new_string = re.search(r'.*?\([^$]*?([\$|\d][^)]* per contract)\)', cell)
我知道我可以改变它寻找美元符号的点,但是还有其他什么吗?
如果您还可以解释您的正则表达式,那将会很有帮助。
如果你总是想收集价格,你可以这样做:
regex_string = r'= (.*? per contract)'
这抓住了:
'625 dollars per contract'
它所做的只是在等号(和它后面的空格)和“每个合同”之间取任何东西。由于您的正则表达式假定“每份合同”一词将始终存在,所以我的也是如此。
如果你只想要价格,你可以这样做:
>>>regex_string = r'= (.*?) per contract'
>>>matchobj = re.search(regex_string, "(.0025 = 625 dollars per contract)")
>>>matchobj.groups()
('625 dollars',)