2016-04-11 2 views
0

で終わるファイルで、例えば:正規表現:私はSIGMETS(航空メッセージ)の特定の数のテキスト文書を持ってどのように適合するように始まると

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}) VALID (\d{6}\/\d{6}) ([A-Z]{4})-/ とは常に/(WKN|NC|INTSF)=/で終わります。

各SIGMETに一致するようにRegExを構築するにはどうすればよいですか?

ありがとうございます。

P.S.私はJavaScriptを使用しています。

+0

開始タグと終了タグの間に入れたいですか? –

+0

[この回答](http://stackoverflow.com/a/7504859/3832970)を参照してください。その下のコメントを読んでください。あなたの答えがあります。あなたの正規表現エンジンがシングルラインモードをサポートしている場合、少しきれいな方法があるかもしれません。 –

+0

kaoreの答え(Wiktor)では、最初のSIGMETの始めから最後のものまでマッチします。私はそれらを分けたいと思います。 – Liuz

答えて

0
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') 
関連する問題