正则表达式提取时间

题目:

以下正则表达式,能用来提取下面文字中的所有日期的是(D)

1

“The next meetup on data science will be held on 2017-09-21, previously it happened on 31/032016

A \d{4}-\d{2}-\d{2}

B (19|20)\d{2}-(0[1-9]|1[0-2])-[0-2][1-9]

C (19|20)\d{2}-(0[1-9]|1[0-2])-([0-2][1-9]|3[0-1])

D 都不能

解析:

A. \d{4}-\d{2}-\d{2}
   这个正则表达式匹配的是 "yyyy-mm-dd" 格式的日期,其中 yyyy 表示年份,mm 表示月份,dd 表示日期。但是在提供的文本中,还有 "31/03, 2016" 这种以斜杠分隔的日期格式,无法被这个正则表达式匹配到。

B. (19|20)\d{2}-(0[1-9]|1[0-2])-[0-2][1-9]
   这个正则表达式是一个稍微通用的日期匹配,但它只能匹配 "yyyy-mm-dd" 格式的日期。同样地,它无法匹配 "31/03, 2016" 这种以斜杠分隔的日期格式。

C. (19|20)\d{2}-(0[1-9]|1[0-2])-([0-2][1-9]|3[0-1])
   这个正则表达式也只能匹配 "yyyy-mm-dd" 格式的日期,但对于 "31/03, 2016" 这种以斜杠分隔的日期格式同样无法生效。

所以,所有这些选项都无法同时匹配两种不同格式的日期。如果想要匹配这两种格式,你需要构建一个更加通用的正则表达式,能够同时匹配 "yyyy-mm-dd" 和 "dd/mm, yyyy" 这两种格式。

那么(19|20)什么意思呢?

`(19|20)` 是一个正则表达式中的一个分组,用于匹配年份的前两位。具体解释如下:

- `(19|20)`:这个部分使用了括号和竖线(|)来创建一个分组。它表示可以匹配 "19" 或者 "20"。这是为了匹配年份的前两位,通常用来表示 20 世纪和 21 世纪。

所以,例如 `(19|20)\d{2}` 就可以匹配从 1900 到 2099 年的年份。

那么(0[1-9]|1[0-2])啥意思呢?

这部分是一个正则表达式的分组,用于匹配月份。具体解释如下:

- `(0[1-9]|1[0-2])`:这个部分同样使用了括号和竖线(|)来创建一个分组。它表示可以匹配从 "01" 到 "09" 或者从 "10" 到 "12" 的数字。

这个表达式对应的是月份,因为月份是从 1 到 12,但是在正则表达式中,如果数字是个位数,通常会使用 0 开头,例如 "01"、"02" 等。所以 `(0[1-9]|1[0-2])` 可以匹配所有合法的月份表示。

\d{2}呢?

\d{2} 是一个正则表达式的部分,用于匹配两位数字。具体解释如下:

  • \d:这是一个正则表达式中用于匹配数字的元字符。它等同于 [0-9],表示匹配任意一个数字字符。
  • {2}:这是一个量词,指示前面的元字符(这里是 \d)需要连续匹配两次。

所以,\d{2} 可以匹配任意两位数字。例如,它可以匹配 "01"、"23"、"45" 等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值