簡體   English   中英

如何通過ANT中的正則表達式獲取索引

[英]How to get the index by regular expression in ANT

我有一個字符串,其版本為.v_september (每個月都會有所不同)。 在此,我想在下划線之后取值,這意味着“ sep” (僅前3個字母)。

通過使用正則表達式.v _(。*),我可以使用完整的月份,而不能僅獲得前3個字母。

有人可以幫助我如何在Apache ANT中實現這一目標。 謝謝 !

正則表達式的屬性函數在本機Ant中有點尷尬(與在文件中使用文本相反)。 Ant-contrib具有replaceregexp任務,但我嘗試盡可能避免使用ant-contrib。

而是可以通過loadfile任務和嵌套過濾器來完成:

    <property name="version" value=".v_september" />

    <loadfile property="version.month.short">
        <propertyresource name="version" />
        <filterchain>
            <tokenfilter>
                <replaceregex pattern="\.v_(.{3}).*" replace="\1" />
            </tokenfilter>
        </filterchain>
    </loadfile>

    <echo message="${version.month.short}" />

關於正則表達式模式,請注意它需要如何以.*結尾。 這是因為Ant沒有簡單地返回捕獲組內容的“匹配”功能。 它只是在進行替換,因此我們需要替換字符串中不屬於該組的所有內容。

.*將捕獲所有內容,並且為了僅捕獲三個字符,您需要編寫{3}而不是* 你也應該逃脫. 在正則表達式的開頭只能匹配文字點。 您可以使用此正則表達式並從group1捕獲,

\.v_(.{3})

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM