我遇到使用正则表达式正确捕获整数和日期的问题。
整数
int_test:“今天是6/28/2017,有17.5%的几率下雨”
int_pattern = re.findall(r'\ d [0-9]。*',int_test)
我正在使用这个正则表达式的问题,它正在从int_test中捕获“6,28,2017,17和5”。我无法找到一种方法来捕获仅由空格包围的整数。
日期
date_test =“今天是2017年6月28日或2017年6月28日或2017年6月28日或2017年6月28日或2017年6月28日”
date_pattern = re.findall(r'\ d。* [ - /] \ d +',date_test)
对于这个,我已经编写了代码来支持日期之间的“/”或“ - ”。我已经成功地能够在“/”或“ - ”之前或之后捕获和数字,但我需要一种方法来捕获句子中“/”或“ - ”之前或之后的字符数量。
非常感谢任何帮助!
答案 0 :(得分:1)
以下是整数的正则表达式:\s(\d+)\s
- 它使用捕获组,您可以参考。
演示:https://regex101.com/r/eefnS1/1
以下是日期的正则表达式:
(\d{1,2}|[a-zA-Z]{2,8}) # day or month
(?:[\/-]{1}) # separator
(\d{1,2}|[a-zA-Z]{2,8}) # day or month
(?:[\/-]{1}) # separator
(\d{4}) # year
答案 1 :(得分:1)
\b\w+[/-]\w+[/-]\d{2,4}\b
将捕获所有日期并且效率更高但它也会捕获其他内容,例如foo/bar/1111
。
答案 2 :(得分:0)
我相信这样的正则表达式是您正在寻找的:\s(\d+)\s