Regex Диалект: JavaScriptУдалить все пробелы кроме того, что содержится в группе захвата
У меня есть следующий захват группы (('|").*?[^\\\2]\2)
, который выбирает строку в кавычках, исключая кавычки экранированы.
Матчи это, например ...
"Felix's pet"
'Felix\'s pet'
Однако сейчас я хотел бы, чтобы удалить все пробелы из строки кроме ничего, соответствующего этому шаблону. Есть ли способ вернуться к ссылке группы захвата \1
, а затем исключить ее из матчей?
Я попытался сделать это с моим ограниченным знанием RegEx, но до сих пор я могу выбрать только пространство, непосредственно предшествующее или следующее шаблону.
Я сохранил свой тестовый сценарий на regexr для удобства, если вы хотите поиграть с моим примером.
Планируемые результаты:
key : string
становится key:string
dragon : "Felix's pet"
становится dragon:"Felix's pet"
"Hello World" something here "Another String"
становится
"Hello World"somethinghere"Another String"
и т.д ...
@anubhava: Я не согласен с голосованием в отношении обмана - принятый ответ использует стратегию, которая работает только со специальной строковой структурой в этом вопросе, и ваш (лучший) ответ не выполняется с экранированными кавычками. Голосование для повторного открытия. –
@TimPietzcker: Я достаточно уверен, что есть лучший дубликат, но я просто не мог найти, используя мой поиск. – anubhava
@SnareChops: ваше регулярное выражение пытается использовать скрытые кавычки, но делает это неправильно (ваш класс символов ошибочен, и даже если он сработал, вам следует рассмотреть случай '' foo \\ '', где есть обратная косая черта перед закрывающей цитатой, но это не ускользающая обратная косая черта. Вам нужно было бы обработать такой случай? –