Как я могу удалить подстроку из строки с регулярным выражением? - PullRequest
1 голос
/ 29 апреля 2009

У меня есть classpath, что-то вроде:

myproject/classes;myproject/lib/somecrab.zip;myproject/lib/somelib1.jar;myproject/lib/somelib2.jar;myproject/lib/somelib3.jar;

Теперь я хотел бы очистить этот путь к классам и выбросить то, что больше не хочу. Следовательно, в этом случае classpath должен выглядеть примерно так:

myproject/classes;myproject/lib/somelib1.jar;myproject/lib/somelib3.jar;

Как я могу сделать это с помощью регулярного выражения? Я хочу сделать это с помощью муравьиного скрипта, например

<pathconvert property="new.classpath" pathsep=";">
    <path refid="old.classpath" />
    <chainedmapper>
        <regexpmapper from="(.*).jar" to="\1.jar" />
    </chainedmapper>
</pathconvert>

Как мне нужно адаптировать регулярное выражение? Большое спасибо!

Ответы [ 2 ]

1 голос
/ 29 апреля 2009

Если все, что вы хотите сделать, это избавиться от непрерывной строки в середине, это должно быть просто:

<regexpmapper from="(.*)myproject/lib/somecrab.zip;(.*)" to="\1\2" />
0 голосов
/ 29 апреля 2009

Я думаю, вам нужно будет сформулировать это как (validstuffbefore) skipstuff (validstuffafter), а затем использовать строку замены \ 1 \ 2

Итак (возможно):

^([\w/]+;)((?:[\w/]+\.jar;)*)[\w/]+\.zip;?((?:[\w/]+\.jar;)*)$

И заменить на:

\1\2\3

У вас могут быть проблемы с несколькими совпадениями, но глобальный флаг должен решить эту проблему.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...