Regex 正则表达式:如何匹配以开头和结尾

Regex 正则表达式:如何匹配以开头和结尾,regex,Regex,我有一个文本文档,文件中包含一定数量的SIGMET(航空消息),例如: BGGL SIGMET 3 VALID 281815/282215 BGSF- BGGL SONDRESTROM FIR SEV TURB FCST AT 1815Z WI N7900 W02550 - N8200 W01150 - N8130 W00805 - N7540 W01815 - N7540 W02440 - N7900 W02550 SFC/FL080 STNR NC= ENBD SIGMET C01 VAL

我有一个文本文档,文件中包含一定数量的SIGMET(航空消息),例如:

BGGL SIGMET 3 VALID 281815/282215 BGSF-
BGGL SONDRESTROM FIR SEV TURB FCST AT 1815Z WI N7900 W02550 -
N8200 W01150 - N8130 W00805 - N7540 W01815 - N7540 W02440 - N7900
W02550 SFC/FL080 STNR NC=

ENBD SIGMET C01 VALID 281530/281930 ENVV-
ENOR NORWAY FIR OCNL SEV MTW FCST WI N6200 E00530 - N6300 E00830 -
N6300 E01030 - N6200 E01000 - N6200 E00530 SFC/FL260 STNR NC=

ENSV SIGMET B02 VALID 281500/281900 ENVV-
ENOR NORWAY FIR OCNL SEV TURB FCST WI N5900 E00730 - N5900 E00530 -
N6200 E00530 - N6200 E00730 - N5900 E00730 SFC/FL180 STNR NC=
SIGMET的开头符合以下格式:
/([A-Z]{4})(AIRMET | SIGMET)(\w{1,3})有效(\d{6}\/\d{6})([A-Z]{4})-/
并且始终以
/(WKN | NC | INTSF)=/
结尾

如何构建一个正则表达式来匹配每个SIGMET

提前谢谢


另外,我使用的是JavaScript。

您希望在这些标签之间还是包括这些开始和结束标签?请参阅。并阅读下面的评论。这是你的答案。如果您的正则表达式引擎支持单线模式,可能会有一种更简洁的方法。使用kaore答案(Wiktor),匹配从第一个SIGMET开始到最后一个,我希望将它们分开。我希望包括开始和结束标记。而且,我不能使用lookback工具,因为我使用的是Javascript。
import re


with open('a.txt') as file:
    data = '\n\n' + file.read() + '\n\n'

pattern = r'\n\n' + r'([A-Z]{4}) (AIRMET|SIGMET) (\w{1,3}) VALID (\d{6}\/\d{6}) ([A-Z]{4})-.*?(WKN|NC|INTSF)=' + r'\n\n'
pattern_compiled = re.compile(pattern, re.DOTALL)

res = pattern_compiled.finditer(data)

if res:
    for i in res:
        print(i)
        print(i.group())
else:
    print('Not found')