在YML Regex中跳过多行

时间:2018-06-14 06:36:07

标签: regex templates yaml field

我正在创建YML模板以匹配文件(通过Python解析),在YML模板中,我必须输入与输入文件和Python匹配的字段,然后转换为数据库(CSV文件)。

但我面临与公司细节相匹配的问题。该文件的一部分如下所示:

COMPANY DETAILS

Date : 01-06-2018

ABC Industries
12-31 Lane
New York

Contact No. 1111

该公司实际上是ABC Industries。但是在我的文件中,Date介于COMPANY DETAILS文本和实际公司详细信息之间。

我将Date匹配为:

date: Date :\s+(\d+\-\d+\-\d+)

在YML模板文件中。但我无法匹配公司的细节。

我正在使用这样的Regex跳过从文本DATE开始的行:

company: COMPANY DETAILS\s+^(Date :.*)?([A-Za-z\s*]*)\s+Contact No.

但它不起作用。请帮我一个正确的正则表达式,它跳过任何空白行或以Date :开头的行,以便我可以从文本中提取正确的公司详细信息。

提前致谢。

修改

此问题现已解决。

COMPANY DETAILS\s+Date :\s+\d+\-\d+\-\d+\s+([A-Z ]*)\n

诀窍。

2 个答案:

答案 0 :(得分:0)

使用re.search

<强>演示:

import re
s = """COMAPNY DETAILS

Date : 01-06-2018

ABC Industries
12-31 Lane
New York

Contact No. 1111"""

m = re.search("(?<=COMAPNY DETAILS)(?P<company>.*?(?=Contact))", s, flags=re.DOTALL)
if m:
    print( m.group('company') )

<强>输出:

ABC Industries
12-31 Lane
New York

答案 1 :(得分:0)

您可以使用

void *dlopen2(const char *filename, int flags){
    if(/*your conditions*/)
        return void *dlopen(filename, flags);
    return (void *) NULL;
}

请参阅regex demo

<强>详情

  • COMPANY DETAILS\s+Date\s*:.*\s*(.+) - 文字子字符串
  • COMPANY DETAILS - 1+空格
  • \s+ - Date\s*:,0 +空格,Date
  • : - 在
  • 之后包含任何空格的行
  • .*\s* - 第1组:包含公司数据的行。

Python demo

(.+)