Regex Заменить выражение для захваченных групп - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь разобраться с RegEx, и у меня есть переменная, которую я пытаюсь заменить.

Переменная инициализируется следующим образом:

name = "" и я хочу, чтобы регулярное выражение заменило "" на "personName"

Пока у меня есть следующий RegEx:

^(name).*?("")\2, который устанавливает группы захвата, и я выбрал группу 2, но я не уверен, как вставить замещающий текст.

Примечание: это будет использоваться с sed в скрипте.

1 Ответ

0 голосов
/ 17 сентября 2018

Вот как вы можете это сделать:

repl='NEW_VALUE'
sed "s/^\(name *= *\"\)\"/\1$repl\"/g" file > newfile

См. онлайн демо .

Подробности паттерна BRE POSIX:

  • ^ - начало строки (удалить, если значение может появиться в любом месте строки)
  • \(name *= *\"\) - Группа захвата 1: name, 0+ пробелов, =, 0+ пробелов, "
  • \" - двойная кавычка.

\1 в RHS вставляет значение, захваченное в Группу 1, и $repl интерполируется со значением переменной, затем вставляется ".

g выполняет множественный поиск и замену.

В текущем сценарии , когда все замещающие значения являются буквенно-цифровыми или числами с плавающей запятой, динамическая замена не требует специальной предварительной обработки. В противном случае, если замещающие строки могут содержать любых символов, рассмотрите возможность использования этих методов .

...