preg_replace regex stop в конце строки - PullRequest
1 голос
/ 02 декабря 2019

Застрял при выделении и удалении текста с помощью preg_replace. У меня есть начальная точка адреса: без конечной точки, за исключением того, что она заканчивается новой строкой. Существует ли регулярное выражение, которое будет удалять строки текста, используя новую строку в качестве конечной точки?

Адрес: 123 Main Street
Город: Нью-Йорк

preg_replace('#Address:.*#si'), '', $lead_container)

Выше удаляются все, включая City: New York, который я хочу сохранить. Я мог бы использовать Город: в качестве моей конечной точки, за исключением того, что это не всегда доступно. Предпочитайте новую строку \n в качестве конечной точки.

preg_replace('#Address:.*\n#si'), '', $lead_container)

Попытка добавления \n и \r к моему регулярному выражению. Это все еще выбирает все. Если это возможно, я был бы признателен за указание в правильном направлении. Спасибо

Ответы [ 2 ]

2 голосов
/ 02 декабря 2019

У вас есть несколько вариантов. Во-первых, вы можете удалить опцию s в своем регулярном выражении;это предотвратит совпадение . новой строки:

echo preg_replace('#Address:.*#i', '', $lead_container);

Во-вторых, вы можете сделать регулярное выражение в своем втором примере не жадным, добавив ? после .*:

echo preg_replace('#Address:.*?\n#si', '', $lead_container);

В обоих случаях для выборочного ввода

$lead_container = "Address: 123 Main Street
City: New York";

Выход составляет City: New York. Демонстрация на 3v4l.org

0 голосов
/ 02 декабря 2019

Выбор начинается после первой пробела

preg_replace('[ ].*?\n', '', $lead_container)
...