regex命令(除去指定的txt之外的所有内容)

时间:2012-04-16 08:40:10

标签: java regex

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

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

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

 wlr

此行会出现多次,其中所有内容在=符号后发生变化,每次我想要保留的内容都是在name =

之后

感谢任何帮助

3 个答案:

答案 0 :(得分:1)

您可以执行类似

的操作
.*name =\s*(\w+).*

并替换为第1组的内容

here on 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");

答案 1 :(得分:0)

从您的描述中,您有点难以理解您的需求。 但是正则表达式是矫枉过正的。你应该使用smth:

String s = myString.substring(myString.indexOf("name =")+6);

答案 2 :(得分:0)

我建议您提取 =之后出现的单词,即

Pattern p = Pattern.compile("=\\s*(\\S+)");
Matcher m = p.matcher(str);
if (m.find()) {
    String value = m.group(1); // contains your wlr
    ...............
}