Это текущее регулярное выражение, которое я использую для дезинфекции предложений, когда люди пишут что-то вроде:
Привет. Я Андрес, не так ли?
Он будет автоматически преобразован в:
Здравствуйте. Я Андрес, не так ли?
Проблема возникает, когда в строке есть числа. Пример:
У меня 40.381,32 доллара.
… будет преобразован в:
У меня 40. 381, 32 доллара.
Мой текущий код:
echo preg_replace( '/[!?,.](?![!?,.\s])/', '$0 ', 'Hello my friend.There should be a space after sentence periods and commas, but that should not apply to 40.381,32 numbers.');
Вопрос: как я могу избежать применения этих правил, когда . символы находятся между цифрами? Благодаря!
Использовать шаблон регулярного выражения
(?<!\d)[.,!?](?!\d)
или
(?<!\d)[.,!?](?![.,!?\d])