2011-10-31 95 views
2

我遇到了針對我無法理解正則表達式替換模式和Apache Ant有限文檔propertyregex。我的問題是,我需要使用$ {user.name}屬性並創建一個名爲$ {user.name.lc}的小寫版本,但我無法獲得正確的替換字符串。需要替換Ant的propertyregex語法任務

這是我的本錢:

<target name="foobar"> 
    <echo>${user.name}</echo> 
    <propertyregex 
       property="user.name.lc" 
       input="${user.name}" 
       regexp="[A-Z]" 
       replace="[a-z]" 
       global="true" /> 
    <echo>${user.name.lc}</echo> 
    </target> 

它發現名字的正確的大寫部分,但更換炸彈。這是我得到:

foobar: 
    [echo] Sally Fields 
    [echo] [a-z]ally [a-z]ields 

我一直在谷歌和閱讀大約兩個小時嘗試不同的替代字符串。螞蟻文件是指分組,並顯示這些例子。沒有幫助,因爲有可能或不可能分組中的用戶名。

任何人都可以提供我什麼螞蟻說我需要一個「正則表達式替代模式?」 我的

回答

0

不要爲此使用正則表達式。只有少數正則引擎支持你正在尋找的東西,我不認爲propertyregex就是其中之一。使用這個來代替:

<pathconvert property="converted"> 
    <path path="${user.name}"/> 
    <chainedmapper> 
    <flattenmapper/> 
    <scriptmapper language="javascript"> 
    self.addMappedName(source.toLowerCase()); 
    </scriptmapper> 
    </chainedmapper> 
    </pathconvert> 

    <echo>${converted}</echo> 
+0

謝謝您的解決方案,就像魅力一樣。 – MoxieandMore

-2

可以在替換屬性使用%1>>是轉換爲大寫的標準正則表達式符號,因此您的代碼將如下所示:

<propertyregex 
       property="user.name.lc" 
       input="${user.name}" 
       regexp="[A-Z]" 
       replace="%1>" 
       global="true" />