【发布时间】:2020-01-29 03:10:28
【问题描述】:
我有一个包含以下行的文本文件
! R1 R(1,2) 1.0881
! R2 R(1,3) 1.0881
! R3 R(1,4) 1.0881
! R4 R(1,5) 1.0881
! A1 A(2,1,3) 109.4712
! A2 A(2,1,4) 109.4712
! A3 A(2,1,5) 109.4712
! A4 A(3,1,4) 109.4712
! A5 A(3,1,5) 109.4712
! A6 A(4,1,5) 109.4712
! D1 D(2,1,4,3) -120.0
! D2 D(2,1,5,3) 120.0
! D3 D(2,1,5,4) -120.0
! D4 D(3,1,5,4) 120.0
为了匹配所有内容,我使用了两个不同的正则表达式。
RE1 = !\s\w(\d)\s+R\((\d),(\d+)\)\s+(\d\.\d+
RE2 = !\s\w(\d)\s+\w\((\d)+,\d,\d\)?,?\d?\s?\)\s+\d?\-?\d\d\d?.\d?\d?\d?\d?
如何组合这两个 RE,以便代码检查其中一个 RE。基于SO上的一些帖子,我尝试使用'|'连接这两个表达式,但我所有的尝试都导致typeerror 这是我的尝试之一:
pattern = re.compile(re.compile(r'!\s\w(\d)\s+R\((\d),(\d+)\)\s+(\d\.\d+)') | re.compile(r'!\s\w(\d)\s+\w\((\d)+,\d,\d\)?,?\d?\s?\)\s+\d?\-?\d\d\d?.\d?\d?\d?\d?'))
【问题讨论】:
-
您到底想达到什么目的?检查格式(最好使用解析器),检索值(在空格上拆分)。就目前而言,您的表达方式复杂且容易出错。
标签: regex python-3.x typeerror