有没有人知道将采用以下字符串的正则表达式命令
url = http://184.154.145.114:8013/wlraac name = wlr samplerate = 44100 channels = 2 format = S16le
并删除除以下内容之外的所有内容
wlr
这条线会出现多次,在 = 符号之后的所有内容都会发生变化,并且每次我想要保留的只是 name = 之后的内容
任何帮助表示赞赏
你可以做类似的事情
.*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");
根据您的描述,有点难以理解您需要什么。但是正则表达式是矫枉过正的。你应该像这样使用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
...............
}