我有许多字符串,其中包含类似于FRI, 24-MAR-2017
的子字符串。我已创建以下内容以捕获这些内容,并分别删除FRI,
并将日期重新排序为2017-MAR-24
:
t = re.sub(r'\b((Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|1[012])-([A-Z]+)-(\d{4}))\b', r'\5-\4-\3', temp)
然而,虽然这或多或少有效,但一些字符串,由于未知原因,似乎被忽略并且不受影响地进行此检查。我使用\s
和.
进行了测试,但无济于事。
传递得很好的字符串是:Sat, 01-APR-2017
不匹配的字符串是:Thu, 13-APR-2017
这里有一些输出的副本来说明(请注意我打印每个字符串两次;一次在上面re.sub
之前,一次之后)
Wed, 29-MAR-2017||Thu, 30-MAR-2017
Wed, 29-MAR-2017||Thu, 30-MAR-2017
Sat, 01-APR-2017||Sun, 02-APR-2017
2017-APR-01||2017-APR-02||Yes|Yes
附加信息:使用selenium和beautifulsoup从网站表中读取输入,但HTML中没有任何内容表明应该存在隐形或其他模糊字符;它始终完全相同。
答案 0 :(得分:1)
正则表达式中的(0[1-9]|1[012])
部分与00
到12
的数字匹配,即月。
将其替换为(0[1-9]|[12][0-9]|3[01])
:
(
- 分组构造开始
0[1-9]
- 01
到09
|
- 或[12][0-9]
- 10
到29
|
- 或3[01]
- 30
或31
。这样,您将匹配天,从01
到31
。