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.
你的正则表达式有点奇怪......
尝试:
r'([0-9]+\s*-\s*[0-9]+) business days'
^
并且$
是锚点,将匹配字符串的开头和结尾,我认为这不是你想要的。此外,捕获组并不是真正必要的,因此r'[0-9]+\s*-\s*[0-9]+ business days'
应该可以正常工作。
我添加了量词+
以防万一有更多工作日。并\s*
提供任何可能的空间。
在您的正则表达式中,您有两个字符类[[0-9]
和[-]
一个文字]
。
第一个字符类将匹配任何一个[
,或任何数字。第二个将匹配单个连字符。
前面r
的只是使字符串成为原始字符串。在正则表达式中使用原始字符串通常更安全。
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)
您可以使用re.search('approximately([\s\S]+business\s+days)',s).group(1)
. 用于在正则表达式匹配/搜索中获得所需结果的分组。