Извлечение только первого вхождения строки поиска и игнорирование всего после / - PullRequest
1 голос
/ 03 июня 2019

Я новичок в regex и хочу отобразить все папки, которые содержат имя строки, но игнорируют символы или внутренние каталоги после "/"

Использование только регулярных выражений

(*spark?/)

Ниже приведен набор каталогов:

/ приложение-журналы / искра / журналы / application_15262_85484

/ пользователя / oozie / доля / Библиотека / lib_36456456 / искровой

/ приложение-журналы / искра / журналы

/ приложение-журналы / искра

/ приложения / искра / склад

Мой результат должен быть:

/ приложение-журналы / искра

/ пользователя / oozie / доля / Библиотека / lib_36456456 / искровые * +1025 *

/ приложение-журналы / искра

/ приложений / искровым * * 1 029

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Выражение, которое мы могли бы искать здесь, было бы:

(spark)\/?.*

, который мы заменили бы нашей первой группой захвата, $1.

Демо

Тест

const regex = /(spark)\/?.*/gm;
const str = `/app-logs/spark/logs/application_15262_85484
/user/oozie/share/lib/lib_36456456/spark
/app-logs/spark/logs
/app-logs/spark
/apps/spark/warehouse`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);
0 голосов
/ 03 июня 2019

Ваш шаблон (*spark?/) недопустим, потому что перед квантификатором * есть открывающая скобка для группы захвата, которая недопустима.Знак вопроса после k означает, что символ k является необязательным.

Вы можете использовать повторяющийся шаблон для сопоставления с косой чертой, за которой следует сопоставление без косой черты, а затем совпадение /spark

^(?:/[^/\n]+)+/spark

Пояснение

  • ^ Утверждение начала строки
  • (?: Группа без захвата
    • /[^/\n]+ Соответствие /, затем совпадение 1+ раз, а не / или перевод строки
  • )+ Закрыть группу без захвата и повторить 1+ раз
  • /spark Match /spark

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...