2009-04-29 128 views
1

我有一個類路徑,像這樣:如何從帶正則表達式的字符串剝離子字符串?

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; 

我怎麼用正則表達式來做到這一點?我想用螞蟻腳本來做,例如

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

如何修改正則表達式?非常感謝!

回答

0

我認爲你需要的短語作爲(validstuffbefore)skipstuff(validstuffafter),然後使用\ 1 \ 2

一個替換字符串,(可能):

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

,代之以:

\1\2\3 

你可能有多個匹配的問題,而是全球的標誌應該解決這個問題。

祝你好運!

1

如果你想要做的就是擺脫中間連續串的,它應該僅僅是:

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

+1對於精確匹配,這是很容易保持比我的。 – 2009-04-29 08:34:07