#regex #replace #repeat
#регулярное выражение #заменить #повторить
Вопрос:
Я пытался сопоставить шаблон из приведенной ниже строки в Linux,
$(menu_no),ini_question3.vox,inv_question3.vox,inv_question3.vox,ini_question3.vox,to_question3.vox
Из приведенной выше строки мне нужно найти повторяющееся слово и заменить повторение каким-либо другим словом,
Пример: Здесь повторяющееся слово — inv_question3.vox, inv_question3.vox мне нужно, чтобы это было изменено на inv_question3.vox, end.vox
Я пытался выполнить поиск и замену в редакторе vim, используя приведенную ниже команду, но это не сработало,
:s/(inv_question*.vox),(inv_question*.vox)/1,end.vox/g
Комментарии:
1. Только
inv_question3.vox,inv_question3.vox
поinv_question3.vox,end.vox
. Верно?2. Да, только inv_question3.vox,inv_question3.vox с помощью inv_question3.vox,end.vox
Ответ №1:
Я не уверен, что вы хотите заменить, но если вы хотите сопоставить повторяющуюся строку inv_question3.vox
, вы можете попробовать:
let string = '$(menu_no),ini_question3.vox,inv_question3.vox,inv_question3.vox,ini_question3.vox,to_question3.vox';
let result = string.replace(/(inv_questiond.vox,){2,}/, '$1,end.vox,');
console.log(result)
d
: только 1 число.{2,}
: 2 или более раз
Тогда замена на $1,end.vox,
на $1
является inv_question3.vox
Комментарии:
1. я просто хочу заменить второе вхождение новой строкой в Linux.