如何在RegEx中提取部分字符串

时间:2013-09-16 07:22:21

标签: python regex scrapy

我有一个字符串:

The estimated delivery time will be approximately 5 - 7 business days from the time of order.

我想从此字符串中提取:5-7 business days

我写了正则表达式:'(^[[0-9][-]]*.*$)'

但它不起作用。感谢。

3 个答案:

答案 0 :(得分:2)

你的正则表达式有点奇怪......

尝试:

r'([0-9]+\s*-\s*[0-9]+) business days'

^$是锚点,并且会匹配字符串的开头和结尾,我认为这不是你想要的。此外,捕获组并不是必需的,因此r'[0-9]+\s*-\s*[0-9]+ business days'应该可以正常工作。

我添加了量词+以防万一有更多的工作日。并\s*提供任何可能的空间。

在你的正则表达式中,你有两个字符类[[0-9][-]以及一个文字]

第一个字符类将匹配任何[或任何数字。第二个匹配单个连字符。

前面的r只会使字符串成为原始字符串。在正则表达式中使用原始字符串通常更安全。

答案 1 :(得分:0)

您可以使用re.search('approximately([\s\S]+business\s+days)',s).group(1)。用于在正则表达式匹配/搜索中获得所需结果的分组。

答案 2 :(得分:0)

import re
s="The estimated delivery time will be approximately 5 - 7 business days from the time of order."
re.search('\d+\s*\-\s*\d+.*days',s).group(0)