如何从带有正则表达式的字符串中剥离子字符串?

时间:2009-04-29 08:17:20

标签: regex ant

我有一个类路径,类似于:

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

现在我想清理这个类路径并扔掉我不想要的东西。因此在这种情况下,类路径看起来应该像

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

如何使用正则表达式执行此操作?我想用ant-Script来做,例如

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

我如何调整正则表达式?非常感谢!

2 个答案:

答案 0 :(得分:1)

如果你想做的就是摆脱中间的连续字符串,它应该只是:

<regexpmapper from="(.*)myproject/lib/somecrab.zip;(.*)" to="\1\2" />

答案 1 :(得分:0)

我认为您需要将其标记为(validstuffbefore)skipstuff(validstuffafter),然后使用替换字符串\ 1 \ 2

所以(可能):

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

并替换为:

\1\2\3

您可能遇到多个匹配问题,但全局标记应该解决该问题。

祝你好运!