zoukankan      html  css  js  c++  java
  • java replaceAll之$替换

    最近,在开发一个伪代码翻译工具的过程中,遇到个问题,我们在伪代码中使用spring EL的规则,将非变量限定在${"1"}中,解析后根据上下文的类型转换为相应的java类型。在规则上,我们原先要求op1 op op2之间必须有空格,但是后来发现,有些地方仍然存在着操作符和操作数之间没有空格的情况,为了尽可能多的兼容,我们选择根据上下文进行判断,适当的预处理以便后续解析不会出错,于是需要进行类似下列处理:

    lineText.replaceAll("#\+", "# +").replaceAll("\+@", "+ @").replaceAll("\+\$", "+ $")

    但是执行的时候报

    Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference: group index is missing
    at java.util.regex.Matcher.appendReplacement(Unknown Source)
    at java.util.regex.Matcher.replaceAll(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)

    经反复检查,replaceAll的第二个参数中也需要转义,如下:

    lineText.replaceAll("#\+", "# +").replaceAll("\+@", "+ @").replaceAll("\+\$", "+ \$")

    但是,javadoc并没有提到这一点。

  • 相关阅读:
    线段树
    2016.9.4
    使用CSS代码修改博客模板
    爬虫
    PHP初学[DAY2]
    2016.8.23
    一个自动设置游戏房间的脚本
    可逆矩阵生成
    #2284. 接水果(fruit)
    #3762. 有趣的数(number)
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6340611.html
Copyright © 2011-2022 走看看