匹配除了后跟换行符的字符以外的所有内容

  • 本文关键字:字符 换行符 python regex
  • 更新时间 :
  • 英文 :


这看起来像是一个简单的匹配,但是我无法弄清楚如何匹配所有以已知文本块开始并以分号+换行符结束的文本。我现在所拥有的大部分工作:

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]+)失败,因为换行符匹配到负数。

可以使用

(?sm)^ +(value w+n)(.*?);$

参见regex演示。

细节:

  • (?sm)-re.Sre.M
  • ^-行起始
  • +-一个或多个空格
  • (value w+r?n)-第1组:value,空格,一个或多个字符,和一个LF换行
  • (.*?)-第二组:
  • ;- a;
  • $-在行尾

如果可以有CRLF结尾,则需要

(?sm)^ +(value w+r?n)(.*?);r?$

最新更新