【问题标题】:java regex- get specific index where not have a specific word beforejava regex-获取之前没有特定单词的特定索引
【发布时间】:2017-11-07 16:05:53
【问题描述】:

我试图仅在特定位置在 xml 字符串上添加双引号。

这里是xml内容的例子

    <opr:sec name=display>
     <opr:fld name=fieldName>Value1</opr:fld>
     <opr:fld name=someName>value2</opr:fld>

我需要添加双引号,例如:name="fieldName",并且每行的字段名称都不同。

第一个双引号很简单,使用前面需要的 name=

但对于结束双引号,我认为使用 > 符号,但需要避免在末尾使用 fld

我如何正则表达式没有之前有特定文本的字母

【问题讨论】:

    标签: java regex xml regex-negation


    【解决方案1】:

    这是一种更简单的方法来做你想做的事。
    使用这个正则表达式:
    name=([^&gt;]*)&gt;
    并将其替换为:
    name="$1"&gt;

    【讨论】:

    • @Benius:随时!不过,我的回答只是一些问题:如果您要引用的字段中有&gt;,它将不起作用。如果这是你的情况,我可以更新我的答案。
    【解决方案2】:

    您可以使用捕获块,将您的线分成 3 个块并从碎片中重建它:

    String line = "<opr:fld name=fieldName>Value1</opr:fld>";
    String regex = "(.*name=)(.*)(>.*>)";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(line);
    matcher.matches();
    String result = matcher.group(1) + "\"" + matcher.group(2) + "\"" + matcher.group(3);
    System.out.println(result);
    

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2018-01-15
      • 2022-08-02
      • 1970-01-01
      相关资源
      最近更新 更多