我有一个字符串:
The estimated delivery time will be approximately 5 - 7 business days from the time of order.
我想从此字符串中提取:5-7 business days
。
我写了正则表达式:'(^[[0-9][-]]*.*$)'
但它不起作用。感谢。
答案 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)