Регулярное выражение для поиска текста между второй и третьей косой чертой

Я хотел бы захватить текст, который возникает после второго косая черта и перед третьей косой чертой в строке. Пример:

/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 с другими языками для такой операции.

в любом случае, это шаблон регулярного выражения:

/[\/]*[^\/]+[\/]([^\/]+)/