0

I have a string:

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

I want to extract: 5-7 business days from this string.

I wrote regex: '(^[[0-9][-]]*.*$)'

But it does not works. Thanks.

4

3 回答 3

2

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

尝试:

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

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

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

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

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

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

于 2013-09-16T07:28:50.670 回答
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)
于 2013-09-16T11:39:21.247 回答
0

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

于 2013-09-16T08:47:02.090 回答