【问题标题】:what is the escape character in ant regular expression (regexp element) pattern什么是蚂蚁正则表达式(正则表达式元素)模式中的转义字符
【发布时间】:2011-11-21 12:57:00
【问题描述】:

我有一个文本文件(f.txt),它的内容应该是文件列表(.c 文件和其他文件)一一列出,如下所示。

第一个.c 温度.c 临时文件 一个.txt 第二个.c 第三个.c

在此文件中,我只想为 .c 文件添加一些前缀和后缀。为此,我编写了以下 ant 脚本。

它不适用于字符串second.c

预期输出是

PRE first.c 发布 PRE temp.c POST 临时文件 一个.txt PRE second.c POST 前第三个.c 后

实际输出是

PRE first.c 发布 PRE temp.c POST 临时文件 一个.txt PRE s.c POSTond 前第三个.c 后

它将.c 中的. 视为任何字符。但我保留它来准确解析.c。我尝试在.c 之前使用\,也喜欢<regexp pattern="(.+)\.c">。但这也没有帮助。

请为我提供一个获得预期输出的解决方案。

注意:我在 windows xp 中使用 ant 1.7.0

【问题讨论】:

    标签: regex string ant scripting


    【解决方案1】:

    您想转义 . 并可能使用某种锚点,例如:

    <regexp pattern="^(.+)\.c$"/>
    

    ^$ 表示行的开头和结尾。没有它们像foo.coo.txt 这样的行会匹配。

    【讨论】:

    • +1。是的,锚点和反斜杠应该一直存在,但在我看来,它仍然应该在second.c 上正常工作。我错过了什么?
    • @AlanMoore,说得好。我不知道 Ant,所以只能推测一些非贪婪量词设置是活动的。
    【解决方案2】:

    我认为你必须逃脱两次,例如:

    <regexp pattern="(.+)\\.c">
    

    【讨论】:

    • 不,这是一个 XML 属性值,而不是 Java 字符串文字。
    猜你喜欢
    • 2020-07-24
    • 2013-01-18
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多