2014-10-03 61 views
0

我的ant構建可以接收以下任何一種輸入(典型的classpath);Ant-Contrib propertyregex通過追加字符返回所有匹配

D:\Source\Dir1 
D:\Source\Dir1; 
D:\Source\Dir1;D:\Source\Dir2 
/Source/Dir1 
/Source/Dir1: 
/Source/Dir1:/Source/Dir2 

我想通過RegEx將以上條目轉換如下:

-ID:\Source\Dir1 
-ID:\Source\Dir1 
-ID:\Source\Dir1 -ID:\Source\Dir2 
-I/Source/Dir1 
-I/Source/Dir1 
-I/Source/Dir1 -I/Source/Dir2 

到目前爲止,我在我的ANT有如下;

<propertyregex property="Example1-Result" input="${example}" regexp="[^${path.separator}^$]+(?:)*" replace="-I\0 " global="true"/> 

產生如下:(

-ID:\Source\Dir1 
-ID:\Source\Dir1 ; 
-ID:\Source\Dir1 ;-ID:\Source\Dir2 
-I/Source/Dir1 
-I/Source/Dir1 : 
-I/Source/Dir1 :-I/Source/Dir2 

只是想擺脫的;:從結果

+0

爲什麼不通過propertyregex第二次運行它來擺脫這兩個字符?你期待他們出現在數據的其他地方嗎? – 2014-10-05 22:52:51

+0

不,但是第二個表達是什麼?只是想刪除;和: – SJunejo 2014-10-06 14:16:45

+0

創建了一個顯示該方法的帖子。注意它是如何使用覆蓋重新使用相同的屬性。 – 2014-10-07 00:39:56

回答

1

我會做兩個通行證第一個說法是你的:

<propertyregex property="Example1-Result" input="${example}" 
      regexp="[^${path.separator}^$]+(?:)*" replace="-I\0 " global="true"/> 

第二個是一個簡單的搜索和替換,以去除殘留任何冒號或者分號:

<propertyregex property="Example1-Result" input="${Example1-Result}" 
        regexp="[:;]" replace=" " global="true" override="true"/> 

這種方法假定有不正常的文件名分號或冒號,但似乎不太可能。

+0

謝謝......這是正確的。我還得到了另一個非常簡單的解決方案。見下文; ' 第一條語句將替換';和:''-I',第二個語句只是爲classpath中的第一個條目添加'-I' – SJunejo 2014-10-07 01:50:46

相關問題