正则表达式 - 将字符串值和日期匹配在一起
Regex - Matching String values and Date together
我有一个如下所示的字符串,我应该提取密钥:值,我正在使用正则表达式来实现相同的目的。
line ="Date : 20/20/20 Date1 : 15/15/15 Name : Hello World Day : Month Weekday : Monday"
1) Extracting the key or attributes only.
re.findall(r'\w+\s?(?=:)',line)
#['Date ', 'Date1 ', 'Name ', 'Day ', 'Weekday ']
2)Extracting the dates only
re.findall(r'(?<=:)\s?\d{2}/\d{2}/\d{2}',line)
#[' 20/20/20', ' 15/15/15']
3)Extracting the strings perfectly but also some wrong format dates.
re.findall(r'(?<=:)\s?\w+\s?\w+',line)
# [' 20', ' 15', ' Hello World', ' Month', ' Monday']
但是当我尝试使用 OR 运算符同时提取字符串和日期时,我得到了错误的输出。我相信管道没有正常工作。
re.findall(r'(?<=:)\s?\w+\s?\w+|\s?\d{2}/\d{2}/\d{2}',line)
# [' 20', ' 15', ' Hello World', ' Month', ' Monday']
如果您对以上命令提取日期 (dd/mm/yy) 格式和字符串值有任何帮助,我们将不胜感激。
你需要翻转它。
\s?\d{2}/\d{2}/\d{2}|(?<=:)\s?\w+\s?\w+
正则表达式将首先尝试匹配第一部分。如果成功,则不会尝试下一部分。它然后 breaks 的原因是因为 \w
导致匹配日期的第一个数字。由于 /
不是 \w
(单词字符),因此它在该点停止。
翻转它会使其首先尝试匹配日期。如果不匹配,则它会尝试匹配 属性 。从而避免了问题。
我有一个如下所示的字符串,我应该提取密钥:值,我正在使用正则表达式来实现相同的目的。
line ="Date : 20/20/20 Date1 : 15/15/15 Name : Hello World Day : Month Weekday : Monday"
1) Extracting the key or attributes only.
re.findall(r'\w+\s?(?=:)',line)
#['Date ', 'Date1 ', 'Name ', 'Day ', 'Weekday ']
2)Extracting the dates only
re.findall(r'(?<=:)\s?\d{2}/\d{2}/\d{2}',line)
#[' 20/20/20', ' 15/15/15']
3)Extracting the strings perfectly but also some wrong format dates.
re.findall(r'(?<=:)\s?\w+\s?\w+',line)
# [' 20', ' 15', ' Hello World', ' Month', ' Monday']
但是当我尝试使用 OR 运算符同时提取字符串和日期时,我得到了错误的输出。我相信管道没有正常工作。
re.findall(r'(?<=:)\s?\w+\s?\w+|\s?\d{2}/\d{2}/\d{2}',line)
# [' 20', ' 15', ' Hello World', ' Month', ' Monday']
如果您对以上命令提取日期 (dd/mm/yy) 格式和字符串值有任何帮助,我们将不胜感激。
你需要翻转它。
\s?\d{2}/\d{2}/\d{2}|(?<=:)\s?\w+\s?\w+
正则表达式将首先尝试匹配第一部分。如果成功,则不会尝试下一部分。它然后 breaks 的原因是因为 \w
导致匹配日期的第一个数字。由于 /
不是 \w
(单词字符),因此它在该点停止。
翻转它会使其首先尝试匹配日期。如果不匹配,则它会尝试匹配 属性 。从而避免了问题。