次の文字列を受け取る正規表現コマンドを知っている人はいますか?
url = http://184.154.145.114:8013/wlraac name = wlr samplerate = 44100 channels = 2 format = S16le
次以外のすべてを削除します
wlr
この行は複数回表示されます。ここで、すべてが=記号の後に変更され、保持したいのは毎回、名前=の後に何が表示されるかです。
助けていただければ幸いです
あなたは次のようなことをすることができます
.*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");
あなたの説明から、あなたが何を必要としているかを理解するのは少し難しいです。しかし、正規表現はやり過ぎです。次のようなsmthを使用する必要があります。
String s = myString.substring(myString.indexOf("name =")+6);
の後に表示される単語を抽出することをお勧めします。=
Pattern p = Pattern.compile("=\\s*(\\S+)");
Matcher m = p.matcher(str);
if (m.find()) {
String value = m.group(1); // contains your wlr
...............
}