python正则表达式,匹配开头和结尾获取字符串

原始数据:
METAR ZBAA 230330Z 13002MPS 090V170 CAVOK 32/22 Q1006 NOSIG= <BR/>METAR ZBAA 230300Z 13003MPS 090V160 CAVOK 32/23 Q1007 NOSIG= <BR/>SPECI ZBAA 230330Z 13002MPS 090V170 CAVOK 32/22 Q1006 NOSIG= <BR/>

常规正则测试:(METAR|SPECI)+[\s\S]*?=
---测试通过

问题1 来了,这个表达式再python里面竟然不行,改成这个就可以: METAR+[\s\S]*?=|SPECI+[\s\S]*?=
为什么呢python里面 A|B 失败了?

另个问题:如何只匹配到第一字符串,即第一次出现=,
想要的结果就是第一个字符串:METAR ZBAA 230330Z 13002MPS 090V170 CAVOK 32/22 Q1006 NOSIG=

第1个回答  2018-07-23
import re

A = '''METAR ZBAA 230330Z 13002MPS 090V170 CAVOK 32/22 Q1006 NOSIG= <BR/>METAR ZBAA 230300Z 13003MPS 090V160 CAVOK 32/23 Q1007 NOSIG= <BR/>SPECI ZBAA 230330Z 13002MPS 090V170 CAVOK 32/22 Q1006 NOSIG= <BR/>'''

reg = re.findall(r'(?:METAR|SPECI)+[^=]+=', A)
print(reg[0])

追问

解决不了 只通过正则匹配到第一个=号是吧? ?
只能通过访问列表第一个元素 reg[0]??

追答

除非你要的字符串有不变的独一无二的特征,否则不可能只匹配到它

本回答被网友采纳
相似回答