Регулярное выражение для извлечения пути / имени файла из строки - PullRequest
1 голос
/ 08 августа 2010

Учитывая входную строку, я хотел бы получить выходные данные в указанном формате: filename;path.

Для входной строки:

/vob/TEST/.@@/main/ch_vobsweb/1/VOBSWeb/main/ch_vobsweb/4/VobsWebUI/main/ch_vobsweb/2/VaultWeb/main/ch_vobsweb/2/func.js

Я ожидаю эту строку вывода:

func.js;VOBSWeb/VosWebUI/VaultWeb/func.js

Имя файла указано в конце всей строки, и его путь должен быть разделен с использованием символов после каждого числового значения (например, /1/VOBSWeb/, а затем /4/VobsWebUI и затем /2/vaultWeb)

Связанный:
Это связано с более ранним вопросом C #, но на этот раз с использованием JavaScript: Манипуляции со строками

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Так как я почти закончил печатать его, вот сокращенная версия:

result = subject.replace(/\/?(?:[^\/\d]+\/)+\d+\/([^\/]+\/?)/g, "$1")
                .replace(/^.*\/([^\/]+)$/, "$1;$0");
0 голосов
/ 09 августа 2010

Не берите в голову, на это уже отвечал Тим

. Сначала удалите все "неинтересные вещи" из строки.

Найдите .*?/\d+/([^/]+/?) и замените все на $1

В C #: resultString = Regex.Replace(subjectString, @".*?/\d+/([^/]+/?)", "$1");

В JavaScript: result = subject.replace(/.*?\/\d+\/([^\/]+\/?)/g, "$1");

Это будетпреобразовать вашу строку в

VOBSWeb / VobsWebUI / VaultWeb / func.js


Во-вторых, скопируйте имя файла в начало строки.

Поиск (.*/)([^/]+)$ и замена на $2;$1$2

C #: resultString = Regex.Replace(subjectString, "(.*/)([^/]+)$", "$2;$1$2");

JavaScript: result = subject.replace(/(.*\/)([^\/]+)$/g, "$2;$1$2");

Это преобразует результат предыдущей операциив

func.js; VOBSWeb / VobsWebUI / VaultWeb / func.js

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