【发布时间】:2018-08-20 23:23:44
【问题描述】:
我正在尝试编写一个正则表达式来查找字符串中的特定子字符串。
我正在寻找以下格式的日期:
"January 1, 2018"
我已经做了一些研究,但还没有弄清楚如何为我的具体情况制作正则表达式。
我的正则表达式的当前版本是
re.search("[\w*?\s\d\d\s\d\d\d\d]", my_string)
我对正则表达式相当缺乏经验,但通过阅读文档,只要匹配我正在使用的日期格式,这就是我能想到的。
这是我的正则表达式背后的思考过程:
\w 应该匹配任何 unicode 单词字符,* 应该重复之前的匹配,所以它们一起应该匹配像“一月”这样的东西。 ? 使 * 不贪婪,因此它不会尝试匹配 January 20 形式的任何内容,因为它应该在第一个空格字符处停止。
\s 应该匹配空白。
\d\d 和 \d\d\d\d 应分别匹配两位数和四位数字。
这是我的代码的可测试示例:
import re
my_string = "January 01, 1990\n By SomeAuthor"
print(re.search("[\w*?\s\d\d\s\d\d\d\d]", my_string))
编辑:
我也试过了:[A-Za-z]\s\d{1,2}\s\d{2, 4}
【问题讨论】:
-
你根本不匹配逗号...
-
哦,我完全错过了,感谢您指出这一点。
-
print(re.search(r'\w*\s\d{1,2},\s\d{2,4}', my_string).group()可以工作...括号中的carrefoul 空格和逗号要添加
标签: python regex python-3.x