我遇到了一些简单而棘手的问题。 这里有一个METAR(天气以非常特定的字符串格式)。
LIEA 051550Z 21005KT 9999 FEW020 19/14 Q1011
在此字符串中,051550Z表示天气公告是在每月5号世界标准时间15:50发出的,...和9999表示可见性,...
好吧,我试图匹配一个RegExp,该RegExp可以向我输出可见性,但是我并没有设法解决这个问题。
preg_match_all()返回数字
0515 (from the time group)
2100 (from the wind group)
9999 (wanted)
1011 (from the pressure group)
使用我尝试过的RegExp
([0-9]{4})
然后,我盲目添加了
(?!Z)
尝试至少不获取时间组... 但这不起作用...
看看问题本身,是不是最好每次都考虑获取数组的第三个元素(不添加(?!Z)RegExp)还是尝试直接获取正确的值? 我认为最后的选择会更好。 那么,如何获得可见性?
答案 0 :(得分:0)
您可以使用word boundary \b
,然后匹配4位数字以获取可见性:
\b\d{4}\b
如果在第四个位置必须是4位数字,则还可以匹配前3组,匹配1+倍而不是空格字符\S+
,然后匹配1+倍的水平空格\h
,然后重复3次。
然后使用\K
忘记匹配的内容,并匹配4位数字和一个单词边界。
^(?:\S+\h+){3}\K\d{4}\b