提取一个字符串中第二个句号之前的部分
一个同学提出的问题。
比如对于:
‘System.Exception: Task failed while transcoding the video. Segment: e2eba80e-6ce4-4e47-98f6-fd26f6afd4a6_3; Message: FFMPEG stopped process for this segment, but no output file exists.
那么需要提取的结果是
System.Exception: Task failed while transcoding the video.
实现脚本:1
2
3
4
5
6
7
8s = 'System.Exception: Task failed while transcoding the video. Segment: e2eba80e-6ce4-4e47-98f6-fd26f6afd4a6_3; Message: FFMPEG stopped process for this segment, but no output file exists.'
#print '.'.join(s.split('.')[:2])+'.' #其实用split也很好实现,不一定要用复杂的re
import re
m = re.match(r'(.+?\..+?\.)', s) #re的思路:从开头用非贪心的方法匹配两个句号之前的内容
if m:
print m.group(1)
其实在编写re时候我一般会写成r'([\s\S]+?\.[\s\S]+?\.)
,也就是用[\s\S]
来代替.
,原因是为了可读性——避免一堆.
堆在一起的情况。