Регулярное выражение с заменой

144
21 декабря 2019, 22:00

Нужно заменить все встречающиеся точки кроме таких случаев:

рис.
г.
табл.

Делаю так:

#([^\sрис.\s][^\sг.\s][^\sтабл.\s][.])#u

В итоге не заменяются кроме нужных еще и сочетания ри. та. абл.
И так далее.
Как сделать чтобы [^\sрис.\s] охватывало именно сочетания символов рис.
а не ри. ис.
Модификатор \w+ вроде не поможет или я не знаю куда его ставить.

Answer 1

Для наглядности, все необходимые точки будут заменены на тире "-":

$str = 'Нужно.заменить..все...встречающиеся. точки .кроме таких случаев: рис. г. табл.';
$str = preg_replace('~(?<!рис|г|табл)\.~', '-', $str);
var_dump($str);

Результат:

Нужно-заменить--все---встречающиеся- точки -кроме таких случаев: рис. г. табл.
READ ALSO
Доставка php-кода на бэкэнды

Доставка php-кода на бэкэнды

Категорически приветствую! Допустим, у меня есть локальный gitlab и веб схема, где в роли фронта nginx который просто проксирует все запросы на apache...

158
Как разбить текст на куски, учитывая предложения?

Как разбить текст на куски, учитывая предложения?

Всем приветНеобходимо, используя PHP 5

132
Правильный запрос в MySQL через PHP

Правильный запрос в MySQL через PHP

Добрый деньВ данном запросе к базе данных, хочу реализовать поиск по ключу LIKE и поиску любого значения при помощи аргумента %

130