что такое escape-символ в шаблоне регулярного выражения ant (элемент regexp) - PullRequest
3 голосов
/ 21 ноября 2011

У меня есть текстовый файл (f.txt), его содержимое должно представлять собой список файлов (.c файлы и другие файлы) один за другим, как показано ниже.


    first.c
    temp.c
    temp.txt
    a.txt
    second.c
    third.c

В этом файле я хочу добавить префикс и суффикс только к .c файлам. для этого я написал нижеприведенный скрипт для муравьев.


    <replaceregexp byline="true" file="f.txt">
        <regexp pattern="(.+).c"/>
        <substitution expression="PRE \1.c POST"/>
    </replaceregexp>

Это не работает для строки second.c

Ожидаемый результат -


    PRE first.c POST
    PRE temp.c POST
    temp.txt
    a.txt
    PRE second.c POST
    PRE third.c POST

Фактический вывод


    PRE first.c POST
    PRE temp.c POST
    temp.txt
    a.txt
    PRE s.c POSTond
    PRE third.c POST

Его трактуют . в .c как любого персонажа. Но я сохранил это для точного разбора .c. Я пробовал использовать \ до .c, также как <regexp pattern="(.+)\.c">. Но это тоже не поможет.

Пожалуйста, предоставьте мне решение для получения ожидаемого результата.

Примечание: я использую муравей 1.7.0 в Windows XP

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Вы хотите выйти из . и, возможно, использовать какие-то якоря, например:

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

^ и $ означают начало и конец строки. Без них строки типа foo.coo.txt будут соответствовать.

0 голосов
/ 21 ноября 2011

Я думаю, вам нужно сбежать дважды, например:

<regexp pattern="(.+)\\.c">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...