使用正则表达式捕获整数/日期

时间:2017-06-28 15:37:25

标签: python regex

我遇到使用正则表达式正确捕获整数和日期的问题。

整数

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)

对于这个,我已经编写了代码来支持日期之间的“/”或“ - ”。我已经成功地能够在“/”或“ - ”之前或之后捕获和数字,但我需要一种方法来捕获句子中“/”或“ - ”之前或之后的字符数量。

非常感谢任何帮助!

3 个答案:

答案 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

演示:https://regex101.com/r/fo11qf/1/

答案 1 :(得分:1)

\b\w+[/-]\w+[/-]\d{2,4}\b

将捕获所有日期并且效率更高但它也会捕获其他内容,例如foo/bar/1111

答案 2 :(得分:0)

我相信这样的正则表达式是您正在寻找的:\s(\d+)\s