有没有人知道将采用以下字符串的正则表达式命令
url = http://184.154.145.114:8013/wlraac name = wlr samplerate = 44100 channels = 2 format = S16le
并删除除以下内容之外的所有内容
wlr
此行会出现多次,其中所有内容在=符号后发生变化,每次我想要保留的内容都是在name =
之后感谢任何帮助
答案 0 :(得分:1)
您可以执行类似
的操作.*name =\s*(\w+).*
并替换为第1组的内容
我之前搜索“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
...............
}