擅长:python、mysql、java
<p>这是一个非常适合正则表达式的任务:</p>
<pre><code>import re
dtpattern = re.compile(r'(?<=\s)\d{2}\.\d{2}\.(?:\d{2}|\d{4})\s+\d{2}:\d{2}(?=|)')
date = dtpattern.search(name_date).group()
</code></pre>
<p>这将匹配一个数字模式(每一组数字长度为2或4位数),中间有适当的分隔符;后向和前瞻模式确保匹配仅限于前面有空格、后面有管道字符的日期。在</p>
^{pr2}$
<p>如果您还需要名称<em>以及</em>,请将空白前的所有内容以及日期模式分组:</p>
<pre><code>dtpattern = re.compile(r'(.*?)\s+(\d{2}\.\d{2}\.(?:\d{2}|\d{4})\s+\d{2}:\d{2})|')
name, date = dtpattern.search(name_date).groups()
>>> dtpattern = re.compile(r'(.*?)\s+(\d{2}\.\d{2}\.(?:\d{2}|\d{4})\s+\d{2}:\d{2})|')
>>> for line in samples:
... name, date = dtpattern.search(line).groups()
... print name
... print date
...
john smith 23
21.01.1994 02:23
mr magoo
30.04.05 23:37
Mr bing bong
29.01.10 20:53
</code></pre>