Регулярное выражение для соответствия пути к файлу с определенным префиксом - PullRequest
0 голосов
/ 03 октября 2018

В MongoDB 4.0 у нас есть документы, содержащие следующие пути:

/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt
/ab/gha/name3.txt

Я пытаюсь создать запрос с регулярным выражением, который бы соответствовал строкам с файлами в указанном каталоге (префикс пути)и не совпадают каталоги.Например:

В /abcd/ есть только файл name.txt.

Моя первая попытка с регулярным выражением была такой:

/\/abcd\/((?!\/).)*/gm

К сожалению, это также соответствуетвторая и третья строка с каталогами.

Regexr.com

/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt

Следующие попытки были такими:

/^(?=\/abcd\/)((?!\/).)*/gm

, но это выражение сделалоничего не соответствует.

Какое регулярное выражение будет соответствовать первой строке (имя файла в каталоге / abcd /) и исключать вторую и третью (каталоги)?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вам необходимо проверить расширение, например: /\/abcd\/((?!\/).)*\./gm
Здесь в действии: regexr

0 голосов
/ 03 октября 2018

Вам не нужны группы и заглядывания - это всего лишь регулярное выражение в монго.Запрос может быть таким простым, как

db.collection.find({fieldname:/^\/abcd\/[^\/]+$/})
0 голосов
/ 03 октября 2018

Я думаю, это то, что вы пытаетесь сделать:

/^\/abcd\/([^\/]+\.*$)/gm

https://regex101.com/r/rJNFs9/1

...