python正则表达式,匹配开头和结尾获取字符串
原始数据:METARZBAA230330Z13002MPS090V170CAVOK32/22Q1006NOSIG=<BR/>METARZBAA230300Z13003MP...
原始数据:
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= 展开
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个回答
展开全部
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]??
追答
除非你要的字符串有不变的独一无二的特征,否则不可能只匹配到它
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询