• 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并没有提到这一点。

  • 相关阅读:
    IIS6.0PUT漏洞的利用
    练习1--利用python获取百度前3页搜索结果(可更改页数)
    笔记整理6——用python实现IP流量分析
    Django ORM 那些相关操作
    Django 中得ORM介绍和字段及字段参数
    Django 的 路由系统
    Django
    Django 的 之 视图
    Django 框架
    Django 中ORM 的使用
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6340611.html
Copyright © 2020-2023  润新知