Необходимо сопоставить повторяющиеся слова и заменить их на новые, используя регулярное выражение

#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.