这看起来像是一个简单的匹配,但是我不知道如何匹配所有以已知文本块开头并以分号+换行符结尾的文本。
pattern = r'''[ ]+(value \w+\n)([^;]+)'''
下面是一段允许我解析的示例文本:
value Y1N5NALC
1 = 'Yes'
5 = 'No'
7 = 'Not ascertained' ;
value AGESCRN
15 = '15 years'
16 = '16 years';
然而,如果任何键/值对在字符串 * 中包含分号 *,匹配就会提前失败,因为正则表达式正在寻找任何分号。
value Y1N5NALC
1 = 'Yes'
5 = 'No;Maybe'
7 = 'Not ascertained' ;
我想要做的是通过寻找semicolon
+ Optional(space or tab)
+ newline
来结束匹配。使用([^;\n]+)
失败,因为换行符得到了负的匹配。
1条答案
按热度按时间qni6mghb1#
您可以使用
请参见regex demo。
(?sm)
-re.S
和re.M
打开^
-行的开始+
-一个或多个空格(value \w+\r?\n)
-第1组:value
、空格、一个或多个单词字符和LF换行符(.*?)
-第2组:;
-一个;
$
-在一行的末尾。如果可以有CRLF结尾,则需要