Регулярное выражение для поиска текста между второй и третьей косой чертой
Я хотел бы захватить текст, который возникает после второго косая черта и перед третьей косой чертой в строке. Пример:
/IPAddress/имя_базы_данный/
Мне нужно записать только имя базы данных. В имени базы данных могут быть буквы, цифры и символы подчеркивания. Спасибо.
Ответы
Ответ 1
Как вы получаете доступ к нему, зависит от вашего языка, но в основном вы хотите, чтобы группа захвата находилась в зависимости от вашего второго и третьего "/". Предполагая, что ваша строка всегда в том же виде, что и ваш пример, это будет:
/.*/(.*)/
Если существует несколько слэшей, но в имени базы данных никогда не может быть косой черты, вам нужно:
/.*/(.*?)/
Ответ 2
/.*?/(.*?)/
Если ваши строки всегда имеют /
в конце строки:
([^/]*)/$
Альтернативный метод split
:
split("/")[2]
Ответ 3
Регулярное выражение будет:
/[^/]*/([^/]*)/
поэтому в Perl оператор захвата регулярного выражения будет выглядеть примерно так:
($database) = $text =~ m!/[^/]*/([^/]*)/!;
Обычно символ /
используется для разграничения регулярных выражений, но поскольку они используются как часть совпадения, может использоваться другой символ. Альтернативно, символ /
может быть экранирован:
($database) = $text =~ /\/[^\/]*\/([^\/]*)\//;
Ответ 4
Я знаю, что вы специально задавали регулярное выражение, но для этого вам не нужно регулярное выражение. Вам просто нужно разбить строку на разделители (в этом случае обратную косую черту), а затем выбрать нужную вам часть (в этом случае 3-е поле - первое поле пуст).
-
cut
пример:
cut -d '/' -f 3 <<< "$string"
-
awk
пример:
awk -F '/' {print $3} <<< "$string"
-
perl
, используя функцию split
:
(split '/', $string)[2]
и др.
Ответ 5
Вы можете еще больше укоротить шаблон, пройдя следующим образом:
[^/]+/(\w+)
Здесь \w
включает символы типа A-Z, a-z, 0-9 and _
Я бы предложил вам присвоить функции SPLIT
приоритет, так как я испытал хорошую работу над ними над функциями RegEx, где можно их использовать.
Ответ 6
вы можете использовать explode
функцию с PHP
или split
с другими языками для такой операции.
в любом случае, это шаблон регулярного выражения:
/[\/]*[^\/]+[\/]([^\/]+)/