文字列の 2 番目のスラッシュの後と 3 番目のスラッシュの前に発生するテキストをキャプチャしたいと思います。例:
/ipaddress/データベース名/
データベース名だけを取得する必要があります。データベース名には、文字、数字、アンダースコアが含まれる場合があります。ありがとう。
文字列の 2 番目のスラッシュの後と 3 番目のスラッシュの前に発生するテキストをキャプチャしたいと思います。例:
/ipaddress/データベース名/
データベース名だけを取得する必要があります。データベース名には、文字、数字、アンダースコアが含まれる場合があります。ありがとう。
どのようにアクセスするかは言語によって異なりますが、基本的には、2 番目と 3 番目の "/" の間にあるキャプチャ グループだけが必要です。文字列が常に例と同じ形式であると仮定すると、次のようになります。
/.*/(.*)/
複数のスラッシュが存在できるが、データベース名にスラッシュが存在できない場合は、次のようにします。
/.*/(.*?)/
/.*?/(.*?)/
あなたの行が常に/
行末にある場合:
([^/]*)/$
別のsplit
方法:
split("/")[2]
正規表現は次のようになります。
/[^/]*/([^/]*)/
したがって、Perl では、正規表現キャプチャ ステートメントは次のようになります。
($database) = $text =~ m!/[^/]*/([^/]*)/!;
通常、/
文字は正規表現を区切るために使用されますが、一致の一部として使用されるため、別の文字を使用できます。または、/
文字をエスケープすることもできます。
($database) = $text =~ /\/[^\/]*\/([^\/]*)\//;
次のようにすると、パターンをさらに短縮できます。
[^/]+/(\w+)
ここ\w
には次のような文字が含まれますA-Z, a-z, 0-9 and _
SPLIT
関数を優先することをお勧めします。これは、RegEx 関数を使用できる場所であればどこでも優れたパフォーマンスを発揮したからです。
あなたが具体的に正規表現を要求したことは知っていますが、これには正規表現は必要ありません。文字列を区切り記号 (この場合はバックスラッシュ) で分割し、必要な部分 (この場合は 3 番目のフィールド - 最初のフィールドは空) を選択するだけです。
cut
例:
cut -d '/' -f 3 <<< "$string"
awk
例:
awk -F '/' {print $3} <<< "$string"
perl
式、split
関数を使用:
(split '/', $string)[2]
等
explode
function を他の言語と一緒に、PHP
またはsplit
他の言語と一緒に使用して、そのような操作を行うことができます。
とにかく、ここに正規表現パターンがあります:
/[\/]*[^\/]+[\/]([^\/]+)/