0

我目前正在使用正则表达式来匹配某行,例如:

(.0025 = 625 dollars per contract)

我有一个用于类似表达式的正则表达式,可以完成工作。但是,我想知道是否有更好的实现:

new_string = re.search(r'.*?\([^$]*?([\$|\d][^)]* per contract)\)', cell)

我知道我可以改变它寻找美元符号的点,但是还有其他什么吗?

如果您还可以解释您的正则表达式,那将会很有帮助。

4

1 回答 1

1

如果你总是想收集价格,你可以这样做:

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',)
于 2013-07-25T03:38:58.647 回答