0

有没有人知道将采用以下字符串的正则表达式命令

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

并删除除以下内容之外的所有内容

 wlr

这条线会出现多次,在 = 符号之后的所有内容都会发生变化,并且每次我想要保留的只是 name = 之后的内容

任何帮助表示赞赏

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 回答