Im folgenden Snippet gibt pre_match den ersten Breitengrad gefolgt von sehr vielen Zeichen zurück, dann den Längengrad.
Was ich bin, ist das endgültige Längen-/Breitenpaar.
Wie beschränke ich den Abstand zwischen den beiden Lesungen auf maximal 4 Zeichen?
Der Ausdruck .*?
erlaubt zu viele Zeichen.
Wie kann ich dies ändern, um eine kleinere Anzahl zu erlauben?Wie beschränke ich die Anzahl der Zeichen in einer Wildcard-Übereinstimmung in einem Preg_Match-Muster?
<?php
$lcline="tuesday, 20th. light airs and clear weather. p.m. started at latitude 24 degrees 12 minutes took several azimuth, which gave the variation 16 degrees 30 minutes west. put the ship's company to three watches. wind variable; course south 21 degrees 30 minutes west; distance 28 miles; latitude 31 degrees 17 minutes, longitude 17 degrees 19 minutes west; at noon, funchall, island of madeira, north 13 degrees east, 76 miles. ";
preg_match('/(latitude\s+\d+\s+degrees\s+\d+\s+minutes.*?longitude\s+\d+\s+degrees\s+\d+\s+minutes)/', $lcline, $results);
echo "results=".$results[0]."<BR><BR>"
?>
dies löst es. Ändern .*? zu.{1,4} begrenzt die Lücke zwischen den Längen- und Breitenangaben – user2016210
. Wenn ich jedoch eine Textdatei des Captain Cook Logs durchfalle, die Zeilen einzeln nacheinander extrahiere, kann ich dieses preg_match nicht finden, um Übereinstimmungen in jeder Zeile zu finden - - obwohl es Hunderte gibt! – user2016210