我正在使用正则表达式来查找字符串中的时间:
re.match('.*(\d{2}-\d{2} \d{2}:\d{2})', "09-22 13:27")
无论如何,这没关系,但如果\n
存在,则返回None
:
re.match('.*(\d{2}-\d{2} \d{2}:\d{2})', "\n09-22 13:27")
为什么.*
无法匹配\n
?以及如何处理这个?
答案 0 :(得分:2)
为什么
.*
无法匹配\n
?以及如何处理这个?
re.DOTALL
使.
特殊字符与任何字符匹配,包括换行符;如果没有此标记,.
将匹配除换行符之外的任何内容。
您应该注意.
匹配任何符号,但换行符。使用re.S
(re.DOTALL
)标记将换行符与.
匹配:
import re
obj = re.match('.*(\d{2}-\d{2} \d{2}:\d{2})', "\n09-22 13:27", re.S)
if obj:
print(obj.group(1))
请参阅IDEONE demo
答案 1 :(得分:1)
print re.match('.*(\d{2}-\d{2} \d{2}:\d{2})', "\n09-22 13:27".strip())
^^^^^^^^
您只需strip
newline
。
答案 2 :(得分:1)
您可以使用(?)排除换行符。
st = "\n\n09-22 13:27\n"
import re
mo = re.findall(r'(?<!\S)\d{2}-\d{2}\D+\d{2}:\d{2}(?!\S)',st)
print(mo)
结果:
['09-22 13:27']