/豚/ラテン/
コンテキストはこちら: http://www.mysite.com/pig/latin/
/pig/latin/ または /pig/latin/is/great を含む値を取得しました
豚の部分だけが必要です。これはどのように行われますか?パターンについても少し説明していただけますか
/豚/ラテン/
コンテキストはこちら: http://www.mysite.com/pig/latin/
/pig/latin/ または /pig/latin/is/great を含む値を取得しました
豚の部分だけが必要です。これはどのように行われますか?パターンについても少し説明していただけますか
小文字のみを想定すると、これで最初の部分が提供されます。
^/([a-z]+)/.*
プログラミング言語によっては、式の開始と終了を示す何らかの区切り文字も必要になる可能性があります。
小文字に加えて文字が必要な場合は、それらを文字クラスに追加します。たとえば、^/([a-zA-Z0-9]+)/.*
大文字と数字も許可されます。
/ で始まる文字列の最初の部分と一致するように一致し、次の / までコンテンツをヤンクすると仮定すると、これは機能するはずです
^/([^/]++)/.*+$
Java での概念実証
public static void main(String[] args) {
final String s = "/pig/latin/";
final Pattern p = Pattern.compile("^/([^/]++)/.*+$");
final Matcher m = p.matcher(s);
m.find();
System.out.println(m.group(1));
}
出力
pig
他の言語では、スラッシュをエスケープする必要がある場合があります。
これは、質問にキャッチがないと仮定すると、スラッシュの間にあるテキストの最初のインスタンスと一致する必要があります。
(?<=\/)[^\/]+(?=\/)
正規表現パーサーは文字列内で左から右に移動する必要があり、指定されたパターンのすべてのインスタンスに一致するフラグがないと仮定すると、最初のインスタンスのみに一致します。先読み(?<=...)
および後読み(?=...)
の表記は、指定された文字に一致しますが、一致したグループには返されません。の文字クラスの一致は、を除く[^\/]+
任意の文字の 1 つ以上のインスタンスと一致します。 /