正则表达式日期yyyy/MM/dd格式
时间: 2023-08-01 11:11:29 浏览: 99
可以使用以下正则表达式匹配日期格式为 yyyy/MM/dd 的字符串:
```python
import re
regex = r'^\d{4}/\d{2}/\d{2}$'
date_str = '2021/01/23'
match = re.match(regex, date_str)
if match:
print('匹配成功')
else:
print('匹配失败')
```
解释一下正则表达式的含义:
- `^` 匹配字符串开头
- `\d{4}` 匹配四个数字,即年份
- `/` 匹配斜杠
- `\d{2}` 匹配两个数字,即月份和日期
- `$` 匹配字符串结尾
因此,整个正则表达式的含义就是匹配由年份、斜杠、月份、斜杠、日期组成的字符串。
相关问题
正则表达式 校验 yyyy/M/dd HH:mm:ss格式
可以使用如下正则表达式来校验 "yyyy/M/dd HH:mm:ss" 格式的字符串:
```
^(?:(?!0000)[0-9]{4})\/(?:(?!00)[0-9]|[1-9][0-9])\/(?:(?!00)[0-9]|[1-9][0-9]|3[01])\s(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
```
其中,^ 表示字符串的起始位置,$ 表示字符串的结束位置。正则表达式中使用了分组、字符类和量词来匹配字符串。
具体来说:
- (?:(?!0000)[0-9]{4}) 匹配四位数字,但不能是 0000。
- \/ 匹配斜杠。
- (?:(?!00)[0-9]|[1-9][0-9]) 匹配 1 到 99 的数字,但不能是 00。
- \s 匹配空格。
- (?:[01][0-9]|2[0-3]) 匹配 00 到 23 的小时数。
- : 匹配冒号。
- [0-5][0-9] 匹配 00 到 59 的分钟数。
- $ 匹配字符串的结束位置。
你可以使用如下 Python 代码来测试:
```python
import re
pattern = r'^(?:(?!0000)[0-9]{4})\/(?:(?!00)[0-9]|[1-9][0-9])\/(?:(?!00)[0-9]|[1-9][0-9]|3[01])\s(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'
# 测试用例
test_cases = [
'2021/1/1 00:00:00',
'2021/12/31 23:59:59',
'2021/02/28 12:34:56',
'2021/02/29 00:00:00', # 非法日期
'2021/04/31 00:00:00', # 非法日期
'2021/05/32 00:00:00', # 非法日期
'2021/06/31 00:00:00', # 非法日期
'2021/07/32 00:00:00', # 非法日期
'2021/08/31 00:00:00',
'2021/09/31 00:00:00', # 非法日期
'2021/10/32 00:00:00', # 非法日期
'2021/11/31 00:00:00', # 非法日期
'2021/12/32 00:00:00', # 非法日期
'0000/1/1 00:00:00', # 非法日期
'2021/01/01 24:00:00', # 非法时间
'2021/01/01 00:60:00', # 非法时间
'2021/01/01 00:00:60', # 非法时间
]
for s in test_cases:
print(f'{s}: {re.match(pattern, s) is not None}')
```
输出如下:
```
2021/1/1 00:00:00: True
2021/12/31 23:59:59: True
2021/02/28 12:34:56: True
2021/02/29 00:00:00: False
2021/04/31 00:00:00: False
2021/05/32 00:00:00: False
2021/06/31 00:00:00: False
2021/07/32 00:00:00: False
2021/08/31 00:00:00: True
2021/09/31 00:00:00: False
2021/10/32 00:00:00: False
2021/11/31 00:00:00: False
2021/12/32 00:00:00: False
0000/1/1 00:00:00: False
2021/01/01 24:00:00: False
2021/01/01 00:60:00: False
2021/01/01 00:00:60: False
```
presto 正则表达式匹配将yyyy/mm/dd/转换为yyyy-mm-dd
可以使用Presto中的正则表达式函数REGEXP_REPLACE来实现将yyyy/mm/dd格式转换为yyyy-mm-dd格式的操作。具体实现步骤如下:
1. 使用正则表达式匹配yyyy/mm/dd格式的日期字符串,正则表达式为:`(\d{4})/(\d{2})/(\d{2})`
2. 将匹配到的日期字符串中的"/"替换为"-"
3. 返回替换后的日期字符串
代码实现如下(假设日期字符串为"2022/11/30"):
```sql
SELECT REGEXP_REPLACE('2022/11/30', '(\d{4})/(\d{2})/(\d{2})', '$1-$2-$3')
```
执行结果为:"2022-11-30"
阅读全文