使用Python中的正则表达式从文件中提取多行

时间:2016-09-12 04:38:00

标签: regex python-2.7

public function UploadUserFile() {

        $fields = FieldList::create(
            FileField::create('UserFiles', 'Upload files'),
            HiddenField::create('ID','',$this->getUser()->ID)
        );

        $actions = FieldList::create(
            FormAction::create('SaveUserFile', 'Upload files')
                ->addExtraClass('button rounded solid')
        );

        $form = Form::create($this, 'UploadUserFile', $fields, $actions);
        $form->setFormAction($this->Link().'UploadUserFile/'.$this->getUser()->ID);

        return $form;
    }

我想使用Python提取13:45:09和13:50:10之间的行(包括空行和空格)并将其存储在变量中供以后使用。我不知道使用哪个正则表达式来捕获所有这些字符。

2 个答案:

答案 0 :(得分:1)

编写正则表达式语言模式,描述您想要匹配的内容:

  • 行,数字,数字,冒号,数字,数字,冒号,数字,数字的开头
  • 抓住下一位
  • 再次寻找知道停止的地方

然后正则表达式将其与字符串匹配,其中选项M(MULTILINE)允许匹配每行/任意行上的行开头,S(SINGLELINE)允许{{1}携带线路结尾。 (和.(IGNORECASE),因为我已经在那里,但你可能不需要它。)

I

在线试用:https://repl.it/D5SB

答案 1 :(得分:0)

您可以应用后向断言来确定边界的起点和终点以及终点,如下所示:

import re

m = re.search('(?<=\d\d:\d\d:\d\d)(.*?)(?=\d\d:\d\d:\d\d)', s, re.DOTALL).group()
print(m)