[ID CC-CC2023] Найденное подвыражение под номером $11

Александр Панарин

Участник
Топикстартер
Сообщения
211
Реакции
119
Приветствую, уважаемые эксперты.

Возникла необходимость поменять в DOI все тире на дефисы.

Код:
DOI 11.33311/2175–5192–2020–11–1–25–36

на

Код:
DOI 11.33311/2175-5192-2020-11-1-25-36

Ищу
Код:
(DOI[ \d\.\/]+)(–)(\d+)(–)(\d+)(–)(\d+)(–)(\d+)(–)(\d+)(–)
Меняю на
Код:
$1-$3-$5-$7-$9-$11-

И тут выясняется, что индиз воспринимает $11 как $1 и еще единичка.

А как сделать так, чтобы он именно одиннадцатое совпадение вставил в результат замены?

Заранее благодарю за совет!
 
Приветствую, уважаемые эксперты.

Возникла необходимость поменять в DOI все тире на дефисы.

Код:
DOI 11.33311/2175–5192–2020–11–1–25–36

на

Код:
DOI 11.33311/2175-5192-2020-11-1-25-36

Ищу
Код:
(DOI[ \d\.\/]+)(–)(\d+)(–)(\d+)(–)(\d+)(–)(\d+)(–)(\d+)(–)
Меняю на
Код:
$1-$3-$5-$7-$9-$11-

И тут выясняется, что индиз воспринимает $11 как $1 и еще единичка.

А как сделать так, чтобы он именно одиннадцатое совпадение вставил в результат замены?

Заранее благодарю за совет!
Убрать лишние скобки?
(DOI[ \d\.\/]+)–(\d+)–(\d+)–(\d+)–(\d+)–(\d+)–
 
воспринимает $11 как $1 и еще единичка
интересно, конечно, посижу послушаю )
Зачем сами тире — группы?

1761987860121.png
 
Спасибо всем за ответы. Я в грепах не оч. разбираюсь, теперь буду знать, что можно не все в скобки ставить.

Но для общей эрудиции все таки хочется понять, индиз не может использовать найденное выражение под номером больше 9 ?

Т.е. $10 $11 $12 etc. это все будет восприниматься как $1 ?
 
скобки — группа. Логично, что одиночный символ таковой не является и смысла не имеет, его в оные брать
В скобках не обязательно должно быть больше одного символа. Но в скобки нужно брать только те элементы, которые будут участвовать в выражении замены.
 
Последнее редактирование:
погодите... -/— не участвуют, разве?
Мы же можем огульно поменять одно на другое, без GREP вообще...
Напишу более развернуто:
Но в скобки нужно брать только те элементы из выражения поиска, которые будут участвовать в выражении замены.
 
погодите... -/— не участвуют, разве?
Мы же можем огульно поменять одно на другое, без GREP вообще...
А если в тексте должны остаться тире в других местах? По-моему без GREP будет печально долго при достаточно объёмном тексте.
 
А если в тексте должны остаться тире в других местах? По-моему без GREP будет печально долго при достаточно объёмном тексте.
Тогда можно выполнить задачу в два захода:
1) Найти: DOI\s[^\s]+ и присвоить всему найденному временный символьный стиль.
2) Заменить в этом символьном стиле все на -.