0

次の文字列を受け取る正規表現コマンドを知っている人はいますか?

 url = http://184.154.145.114:8013/wlraac name = wlr  samplerate = 44100 channels = 2       format = S16le

次以外のすべてを削除します

 wlr

この行は複数回表示されます。ここで、すべてが=記号の後に変更され、保持したいのは毎回、名前=の後に何が表示されるかです。

助けていただければ幸いです

4

3 に答える 3

1

あなたは次のようなことをすることができます

.*name =\s*(\w+).*

グループ1のコンテンツに置き換えます

ここRegexrでそれを参照してください

「name=」などを検索します。は次の\s*空白に一致します。

次に、\w+内側の角かっこ。\w任意の文字と数字およびアンダースコアに一致します(オプションを使用する場合、Pattern.UNICODE_CHARACTER_CLASSそれ以外の場合はASCIIのみに固執します)。角かっこがあるため、最初のグループに格納されます。

String in = " url = http://184.154.145.114:8013/wlraac name = wlr  samplerate = 44100 channels = 2       format = S16le";

Pattern r = Pattern.compile(".*name =\\s*(\\w+).*");
Matcher m = r.matcher(in);

String result = m.replaceAll("$1");
System.out.println(result);

またはあなたのコード

String str = line2.replaceAll(".*name =\\S*(\\W).*", "$1");
于 2012-04-16T08:45:36.193 に答える
0

あなたの説明から、あなたが何を必要としているかを理解するのは少し難しいです。しかし、正規表現はやり過ぎです。次のようなsmthを使用する必要があります。

String s = myString.substring(myString.indexOf("name =")+6);
于 2012-04-16T08:47:14.947 に答える
0

の後に表示される単語を抽出することをお勧めします。=

Pattern p = Pattern.compile("=\\s*(\\S+)");
Matcher m = p.matcher(str);
if (m.find()) {
    String value = m.group(1); // contains your wlr
    ...............
}
于 2012-04-16T08:47:21.903 に答える