我有许多字符串,其中包含类似于 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-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
的天。
关于python - 正则表达式匹配一些子字符串,同时忽略看似相同的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009550/