簡體   English   中英

Python正則表達式提取字符串多行

[英]Python regex extract string multiline

從此字符串:

s = 'OBS VA DTG:           07/1200Z\r\r\nEST VA CLD:           SFC/FL200 S2115 W17500 - S2015 W17000 - S2415\r\r\n                      W16930 - S2300 W17815 - S2030 W17615 - S2030\r\r\n                      W17515 - S2115 W17500 FL200/600 NO VA EXP\r\r\nFCST VA CLD+6 HR:     07/1800Z SFC/FL600 NO VA EXP\r\r\nFCST VA CLD+12 HR:    08/0000Z SFC/FL600 NO VA EXP\r\r\nFCST VA CLD+18 HR:    08/0600Z SFC/FL600 NO VA EXP\r\r\n'

漂亮的印刷是:

OBS VA DTG:           07/1200Z
EST VA CLD:           SFC/FL200 S2115 W17500 - S2015 W17000 - S2415
                      W16930 - S2300 W17815 - S2030 W17615 - S2030
                      W17515 - S2115 W17500 FL200/600 NO VA EXP
FCST VA CLD+6 HR:     07/1800Z SFC/FL600 NO VA EXP
FCST VA CLD+12 HR:    08/0000Z SFC/FL600 NO VA EXP
FCST VA CLD+18 HR:    08/0600Z SFC/FL600 NO VA EXP

我想要一個正則表達式來提取EST VA CLD值。 那應該是輸出:

SFC/FL200 S2115 W17500 - S2015 W17000 - S2415
W16930 - S2300 W17815 - S2030 W17615 - S2030
W17515 - S2115 W17500 FL200/600 NO VA EXP

我試過了:

>>> match = re.search(r"EST VA CLD:(.+)\n.+:",s,re.DOTALL)
>>> print match.group(1)
EST VA CLD:\s*([\s\S]+?)\n(?=[^:\n]*:)

試試看,獲取捕捉,請看演示。

https://regex101.com/r/pM9yO9/22#python

怎么樣;

s = 'OBS VA DTG:           07/1200Z\r\r\nEST VA CLD:           SFC/FL200 S2115 W17500 - S2015 W17000 - S2415\r\r\n                      W16930 - S2300 W17815 - S2030 W17615 - S2030\r\r\n                      W17515 - S2115 W17500 FL200/600 NO VA EXP\r\r\nFCST VA CLD+6 HR:     07/1800Z SFC/FL600 NO VA EXP\r\r\nFCST VA CLD+12 HR:    08/0000Z SFC/FL600 NO VA EXP\r\r\nFCST VA CLD+18 HR:    08/0600Z SFC/FL600 NO VA EXP\r\r\n'
t = s.split()

print (" ".join(t[t.index("CLD:")+1:t.index("FCST")]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM