php #regex
#php #регулярное выражение
Вопрос:
Я хотел бы удалить все двойные кавычки из строки, ЗА исключением случаев, когда они используются для дюймов.
Ожидаемые результаты:
это «первая» строка -> это первая строка
«вставьте 3,5-дюймовый дисковод гибких дисков» -> вставьте 3,5-дюймовый дисковод гибких дисков
Я смотрел «the 100» и мне понравилось —> Я посмотрел 100, и мне понравилось
Кружка «боуи» -> кружка Боуи
Я пробовал это регулярное выражение…
preg_replace('/"(S*?)"/', '$1', $term);
… но это почти не работает. Вот что происходит:
это «первая» строка -> это «первая» строка
«вставьте 3,5-дюймовый дисковод гибких дисков» -> «вставьте 3,5-дюймовый дисковод гибких дисков»
Я смотрел «the 100» и мне понравилось -> я смотрел «the 100» и мне понравилось
Кружка «боуи» -> кружка Боуи
Есть предложения? Спасибо
Комментарии:
1. Вы можете приблизиться к regex101.com/r/02VEBf/1 . Демо sandbox.onlinephpfunctions.com/code /… , но у него есть проблемы с
I watched "the 100" and liked it
2. Я не думаю, что есть 100% решение. Рассмотрим утверждения 1: скопируйте фильм «The 300» на дисковод с гибкими дисками 3 1/2 «. и 2: Вы читали статью «Копирование файлов на 3,5-дюймовые дискеты»? Люди хорошо разбираются в таком контексте, но забывают писать правило регулярных выражений.
3. Если вы можете обеспечить правильный формат, вот попытка использования рекурсивного: regex101.com/r/02VEBf/7 — вам нужно будет запустить replace несколько раз, хотя для вложенных случаев
4. Откуда вы знаете, что » здесь не используется для дюймов
I watched "the 100" and liked it
?