正则表达式从两个引号之间获取字符串的内容,从给定名称开始

时间:2011-09-14 13:51:18

标签: java regex

我在xml文件中有多行。

我的行像<Blog blogDescription="bla bla bla" description="" date="2010-10-10"/>

我正在处理以"<Blog"开头的所有行:

  1. 将blogDescription字段的内容设置为说明字段
  2. 删除blogDescription字段
  3. 所以我的路线就像:

    <Blog description="bla bla bla" date="2010-10-10"/>
    

    我不知道我可以使用什么样的正则表达式,我只能得到以下内容:

    "^<(Blog) .*"
    

    我删除了blogDescription字段:

    " blogDescription="
    

    但我不知道如何将blogDescription值放入描述值。

3 个答案:

答案 0 :(得分:2)

如果您已经在使用格式正确的XML,而不是通过正则表达式自己构建解析器,那么为什么不使用可用的XML解析器呢?有很多可以做到这一点。

请参阅此相关问题: Parsing XML in Java

答案 1 :(得分:1)

    String val = "<Blog blogDescription=\"bla bla bla\" description=\"\" date=\"2010-10-10\"/>";
    String regex = "^<Blog (blogDescription=\"[^\"]*\"\\s+).*";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(val);
    matcher.matches();

    MatchResult result = matcher.toMatchResult();
    System.out.println(result.group(1));
    String resultString = val.replace(result.group(1), "");
    System.out.println(resultString);

答案 2 :(得分:1)

你可以像这样使用:

String str = "<Blog blogDescription=\"bla bla bla\" description=\"\" date=\"2010-10-10\"/>";
System.out.println(str.replaceAll("blogDescription=\"([^\"]+)\"\\s+description=\"[^\"]*\"",
            "description=\"$1\""));

。我不知道字符串中是否有换行符。 如果您喜欢字符串中的一个换行符,它将无效: blogDescription =“bla \ nbla”\ n description =;