RegExp Совпадение только с путями содержит имя файла - PullRequest
0 голосов
/ 06 декабря 2018

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

ввод

tanxe\src\lib\hello
tanxe\lib\hello\world\verboseBackup.js
tanxe\src\hello\verboseBackup.js
tanxe\lib\verboseBackup.js

Попытка

input.match(/^tanxe.*?lib.*?\\..*/i)

Ожидаемый результат:

tanxe\lib\hello\world\verboseBackup.js
tanxe\lib\verboseBackup.js

Ответы [ 5 ]

0 голосов
/ 06 декабря 2018

Попробуйте тоже.

 tanxe\\[a-zA-Z\\]+[.]{1}[a-zA-z]{2,3}
0 голосов
/ 06 декабря 2018

Ваше регулярное выражение работает, я думаю, вам нужны дополнительные флаги: g global, m multiline

var input = `tanxe\\src\\lib\\hello
tanxe\\lib\\hello\\world\\verboseBackup.js
tanxe\\src\\hello\\verboseBackup.js
tanxe\\lib\\verboseBackup.js
D:\\Program Files\\atom\\.atom\\packages\\utilities-tanxe\\lib\\abc\\verboseBackup.js`

input.match(/^.*tanxe.*?lib.*?\..*/gmi).forEach(r => console.log(r))
// start with "tanxe"
//input.match(/^tanxe.*?lib.*?\..*/gmi).forEach(r => console.log(r))
0 голосов
/ 06 декабря 2018
input.match(/^tanxe\\lib\\(\w+\\)*\w+\.\w+/gi);

См. Созданную мной скрипту regExr .

0 голосов
/ 06 декабря 2018

Вы можете попробовать этот помощник

^.*\.\w+$

Объяснение

  • ^ - Привязка к началу строки.
  • .* - соответствует чему угодно один или несколько раз, кроме символа новой строки.
  • \. - соответствует ..
  • \w+ - соответствует слову один или несколько символоввремя.
  • $ - Конец строки.

Демо

Обновление: - Если вы строго хотите сопоставить tanxe \ lib и только следующие вещи

Вы можете попробовать этот помощник

^tanxe\\lib\\.+\.\w+$

Демо

0 голосов
/ 06 декабря 2018

Вы можете попробовать это: tanxe\\lib.*?\.\w+
Он соответствует путям, начинающимся с tanxe\lib и заканчивающимся расширением файла.

...