行尾的正则表达式

时间:2017-02-13 11:07:42

标签: regex multiline gedcom

我正在尝试使用正则表达式解析GEDCOM文件,并且几乎就在那里,但是表达式抓住文本的下一行,其中行的末尾有可选文本。每条记录应该是一行。

这是文件摘录:

0 HEAD
1 CHAR UTF-8
1 SOUR Ancestry.com Family Trees
2 VERS (2010.3)
2 NAME Ancestry.com Family Trees
2 CORP Ancestry.com
1 GEDC
2 VERS 5.5
2 FORM LINEAGE-LINKED
0 @P6@ INDI 
1 BIRT 

这是我正在使用的正则表达式:

(\d+)\s+(@\S+@)?\s*(\S+)\s+(.*)

这适用于所有行,除了那些不包含任何文本的行,例如第一行。例如,第一个记录的最后一个捕获组包含' 1 CHAR UTF-8'。

这是来自regex101.com的屏幕截图,显示紫色捕获组如何渗透到下一行:

Regex101 screen shot

我尝试使用$限定符将。*限制为只有行结束,但是这会失败,因为第二行也是行结束。

非常感谢任何帮助。

戴夫

1 个答案:

答案 0 :(得分:2)

/C/Users/Admin/Downloads/gmp-6.1.2.tar/gmp-6.1.2/tests' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory模式匹配换行符号。将其替换为常规空格,或\s[^\S\r\n](如果是PCRE)或\h

[\p{Zs}\t]

请参阅regex demo

如果您需要匹配,您可以添加多行选项并添加锚点(开头为(\d+) +(@\S+@)? *(\S+) +(.*) ,图案末尾为^)双方(见another demo)。