В следующем фрагменте кода pre_match возвращает первое значение широты, за которым следует большое количество символов, а затем значение долготы.
Я ищу последнюю пару широта / долгота.
Как мне ограничить расстояние между двумя показаниями до 4 символов?
Выражение .*?
допускает слишком много символов.
Как я могу изменить это, чтобы разрешить меньшее число?
<?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>"
?>
3 ответа
Выражение
Функция
{ П}
Совпадение ровно n раз, например: нажмите, чтобы проверить, что «\ w {2}» равно «\ w \ w»; Нажмите, чтобы проверить, что "а {5}" равно "ааааа"
{m, n}
Не менее m, но не более n раз: нажмите, чтобы проверить, что "ba {1,3}" соответствует "ba", "baa", "baaa"
{м,}
Совпадение не менее n раз: нажмите, чтобы проверить, что "\ w \ d {2,}" соответствует "a12", "_ 456", "M12344" ...
?
Совпадение 1 или 0 раз, эквивалентно {0,1}: нажмите, чтобы проверить "a [cd]?" соответствует "a", "ac", "ad".
Соответствует 1 или несколько раз, эквивалентно {1,}: нажмите, чтобы проверить совпадения "a + b" "ab", "aab", "aaab" ...
0 или более совпадений, эквивалентно {0,}: нажмите, чтобы проверить, что «\ ^ * b» соответствует «b», «^^^ b» ...
Ссылка: http://www.regexlab.com/en/regref.htm
Добавьте .+
в начало регулярного выражения и получите результат из группы 1:
preg_match('/.+(latitude\s+\d+\s+degrees\s+\d+\s+minutes.*?longitude\s+\d+\s+degrees\s+\d+\s+minutes)/s', $lcline, $results);
echo "results=",$results[1],"\n";
Вывод:
results=latitude 31 degrees 17 minutes, longitude 17 degrees 19 minutes
Если вы указали ограничение, вы можете использовать фигурные скобки например: /\s{4}/
это выберет все с 4 пробельными символами последовательно
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.