我正在尝试从较大的字符串中提取一段字符串。
示例:
String value;
...etc...
value = someMethod();
// Here value equals a large string text
value;
我想提取这个以“path =”开头的字符串的子集以及它之后的所有内容。
详细说明示例:
如果值等于:
StartTopic topic = testParser,multiCopy = false,required = true, all = false,path = / Return / ReturnData / IRSW2
我只想要“path = / Return / ReturnData / IRSW2”等等。
我怎么能用Java做到这一点?
这就是我目前所拥有的:
if(value.contains("path")) {
String regexStr = FileUtils.readFileToString(new File("regex.txt"));
String escapedRegex = StringEscapeUtils.escapeJava(regexStr);
System.out.println(value.replaceAll(escapedRegex), "$1");
}
这不起作用!只需再次输出整个字符串
regex.txt的内容:
/ =路径([^ \,] +)/
答案 0 :(得分:1)
这应该可以解决问题
String s = "if value=StartTopic topic=testParser, multiCopy=false, required=true, all=false, path=/Return/ReturnData/IRSW2";
String regex= "path=[^\\,]*";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
if(m.find()) {
System.out.println(m.group());
}
答案 1 :(得分:1)
您也可以使用:
String regex = "(?<=path=)[^\\,]*";
insted,因此您只能获得/Return/ReturnData/IRSW2
部分。
答案 2 :(得分:0)
使用函数indexOf()查找'path ='
的索引答案 3 :(得分:-1)
pipefail