Регулярное выражение, соответствующее нескольким вхождениям в файл и в строку

StackOverflow https://stackoverflow.com/questions/234386

  •  04-07-2019
  •  | 
  •  

Вопрос

Первый пост, так вот.Я пишу сценарий, который выполняет интеллектуальный поиск и замену в дереве файлов.По сути, сценарий помещает содержимое каждого файла в строку буфера и выполняет сопоставление с заранее определенным шаблоном. В данном случае шаблон /^[^\r\n]*(vendor)[^\r\n]*$/im.Шаблон должен найти все формы слова «поставщик» без учета регистра и предоставить мне всю найденную строку.Мне нужно увидеть всю строку, чтобы определить, следует ли заменять вхождение.Этот шаблон хорошо работает для любого количества вхождений отдельных строк в данном файле.

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

Просто образец того, что я надеюсь создать.Пример однострочного совпадения с несколькими совпадениями:

С энтузиазмом революционизируют потенциальные поставщики с поддержкой веб-поставщиков.

Я хотел бы вывести что-то похожее на это (опять же, проблема здесь не в выводе, а в том, смогу ли я сопоставить все это с одним шаблоном):

Несколько вхождений в строке:|| С энтузиазмом революционизируют потенциальные поставщики с поддержкой веб-поставщиков.||

Заменять?(y, n, q) || ... Потоп с подъемом Потеном ...||

Заменять?(y, n, q) || ... связи поставщиков Insta ...||

Пожалуйста, дайте мне знать, если мне неясна моя цель.Спасибо за любую помощь и ответ на это!

Это было полезно?

Решение

Если вы используете

/^[^\r\n]*(vendor)[^\r\n]*$/im

Я бы предложил добавить оператор g (глобальный)

/^[^\r\n]*(vendor)[^\r\n]*$/img
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top