正则表达式在php之间的单词匹配

时间:2012-09-22 12:13:02

标签: php regex preg-match

我正试图从此数据文件(Link)获取ESNU / UMEA的机场数据

我想在ESNU / UMEA之后和下一个机场列出之前匹配所有内容(尝试匹配'四个字母''斜线''多于三个字母'以匹配下一个机场标识符。

我做了很多次尝试但仍然没有成功,非常感谢任何帮助。

到目前为止我的代码:

$url = "http://www.lfv.se/AISInf2.asp?TextFile=idunesaavfr.txt&SubTitle=&T=Sverige%20VFR&Frequency=250";
$raw = file_get_contents($url);

preg_match('/ESNU\/UMEA([\s\S]*?)([A-Z]{4}/[A-Z]{3,})/',$raw,$data,PREG_OFFSET_CAPTURE);

1 个答案:

答案 0 :(得分:2)

你需要转义斜杠,因为你的模式是用斜杠括起来的:

preg_match('/ESNU\\/UMEA(.*?)([A-Z]{4}\\/[A-Z]{3,})/',$raw,$data,PREG_OFFSET_CAPTURE);

我还将单反斜杠更改为双反斜杠,虽然不是非常必要,因为PHP将未知字符之前的反斜杠解释为字面反斜杠。
此外,我将[\s\S]更改为等效的.

您还可以将封闭字符更改为例如#

preg_match('#ESNU/UMEA(.*?)([A-Z]{4}/[A-Z]{3,})#',$raw,$data,PREG_OFFSET_CAPTURE);