Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式提取字符串多行_Python_Regex - Fatal编程技术网

Python正则表达式提取字符串多行

Python正则表达式提取字符串多行,python,regex,Python,Regex,从该字符串: 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

从该字符串:

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)
试试这个。抓拍。看演示

怎么样

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")]))

你能解释一下[\s\s]+?@alasarr
[\s\s]
表示捕获
空格
非空格
字符。这将跨越多行,因为
\s
捕获
\n
。因此你不需要使用
s
标记。你能解释一下吗?^:\n?@alasarr
[^\n:]*:
表示在找到
和“\n”以及其他字符之前,不应该有
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")]))