ich einen Text in das folgende Format haben:Regex übereinstimmen, wenn ein Begriff in Gegenwart später in String
Name Andy Andyson
Address Line 1 43 Main Street
Address Line 2 Bigtown
Case Ref 23652/54362
Office
Address Line 1 1 Main Street
Address Line 2 Bigtown
App Date 12/01/2008
ich die erste Adresszeile zu extrahieren versuche 1. ich die Regex in PHP bin mit:
/Address Line 1 ([A-Za-z0-9 ]{1,25})/
, die nicht vorhanden ist, es sei denn, die erste Adresse große Werke (Text oder die Zeile Address Une 1
zum Beispiel), wobei in diesem Fall könnte es die zweite Adresszeile 1.
Wie kann ich wieder für ce die Regex nur Address Line 1
zurückgeben, wenn es von Office
zu einem späteren Zeitpunkt folgt?
Ich habe versucht, Lookaheads mit:
Address Line 1 ([A-Za-z0-9 ]{1,30})(?=.*Office)
Address Line 1 ([A-Za-z0-9 ]{1,30})(?=.*\n\rOffice)
Address Line 1 ([A-Za-z0-9 ]{1,30})(?!.*\n\rOffice)
Address Line 1 ([A-Za-z0-9 ]{1,30}).*Office
Ich denke, Lookaheads ist wie ein später Wert bestätigen in der Zeichenfolge vorhanden ist, aber keine der oben genannten Arbeit.
Wenn es eine Übereinstimmung für die erste Address 1
vor dem Wort Office
nicht finden kann, dann möchte ich nur nichts zurückgeben, nicht die zweite Address 1
val.
Folgendes sollte keine Streichhölzer, produziert, während es 1 Main Street
derzeit gibt:
Name Andy Andyson
Address Une 1 43 Main Street
Address Line 2 Bigtown
Case Ref 23652/54362
Office
Address Line 1 1 Main Street
Address Line 2 Bigtown
App Date 12/01/2008
Haben Sie '' verwenden preg_match' oder in diesem Fall sollte durch
^
(Beginn der Zeile) und$
(Ende der Zeile) und der/m
Modifikator verwendet werden sollte umgeben sein preg_match_all'? Sehen Sie sich [diese Demo] (https://regex101.com/r/Irntsj/1) an, Ihre Regex ist in Ordnung mit 'preg_match'. –@ WiktorStribiżew Sorry, 'preg_match'. – samiles
@ WiktorStribiżew Hmm nein, das funktioniert nicht, es gibt immer noch die zweite Adresszeile 1 ... Versuchen Sie den zweiten Beispieltext, den ich gab. – samiles