我试图匹配E)“列”的所有内容。
A1147/13 NOTAMN
Q) ESAA/QRRCH/IV/BO /AW/000/023/5933N01746E002
A) ESSA B) 1311140900 C) 1311211500
D) 14 21 0900-1500
E) UPPER LIMIT ES R16C KUNGSANGEN RAISED TO 2300 FT AMSL
REF AIP ENR 5.1
F) GND G) 2300FT AMSL
CREATED: 30 Oct 2013 10:00:00
SOURCE: EUECYIYN
使用以下正则表达式:
preg_match_all('/E\)(.*)(?=F\))/is', $string, $output);
我已经设法获取数据,但只有F)列存在,它并不总是这样做。有时结束就像:
A1147/13 NOTAMN
Q) ESAA/QRRCH/IV/BO /AW/000/023/5933N01746E002
A) ESSA B) 1311140900 C) 1311211500
D) 14 21 0900-1500
E) UPPER LIMIT ES R16C KUNGSANGEN RAISED TO 2300 FT AMSL
REF AIP ENR 5.1
CREATED: 30 Oct 2013 10:00:00
SOURCE: EUECYIYN
如何解决这个问题?
编辑: 这是我想要回归的部分:
UPPER LIMIT ES R16C KUNGSANGEN RAISED TO 2300 FT AMSL
REF AIP ENR 5.1
它将以列F)的开头或文本CREATED结束。
答案 0 :(得分:2)
我建议使用HamZa的方法,稍微进行一些调整:
E\)(.*?)(?=F\)|$)
您也可以尝试这样的事情,但处理时间可能会长一些:
E\)((?:(?!F\)).)+)
(?:(?!F\)).)+
将匹配除F)
如果要匹配到CREATED:
,可以轻松地将其添加到正则表达式中:
E\)((?:(?!F\)|CREATED:).)+)
答案 1 :(得分:1)
请勿使用DOTALL并使用MULTILINE:
/^E\).*$/im