如何使用正则表达式或任何方法从更大的字符串中获取一段字符串

时间:2015-08-11 21:54:22

标签: java regex string

我正在尝试从较大的字符串中提取一段字符串。

示例:

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的内容:

  

/ =路径([^ \,] +)/

4 个答案:

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