PHP удаляет двойные кавычки из строки, кроме кавычек после чисел

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 ?