2013-01-15 183 views
0

你能告訴我如何在ant中爲字符串編寫正則表達式嗎?我有一個名爲typeSplitFirstPart的屬性。我想在屬性類型SplitFirstPart之後插入一些值,它們可以是Product_A或Product_PD或Product_CD(請參見下文)。編寫正則表達式

CSDT_FLAG_PRODUCT_FF_FWUIDS=Product_A:*;Product_PD:*;Product_CD:* 

目前我有這個,但它不工作。

<replaceregexp file="x" flags="s" match="([^\.]*)\$\{typeSplitFirstPart:\*?\}([^\.]*)" replace="$HELLOEVERYONE\2"/> 

回答

1

這些是純的正則表達式模式假定*是任意字符但分號([^;]

第一部分是強制性的,至少一個產品是強制性的,產品不能爲空:

^([A-Z_]+)=(?:(Product_[A-Z]+):([^;]+);?)+ 

第一部分是強制性的,產品是可選的,但不是空的:

^([A-Z_]+)=(?:(Product_[A-Z]+):([^;]+);?)* 

第一部分是強制性的,產品是可選的,它們可以爲空:

^([A-Z_]+)=(?:(Product_[A-Z]+):([^;]*);?)* 

只是注意,開始?:組沒有返回優化什麼。

+0

謝謝。但我需要檢索由typeSplitFirstPart表示的ant屬性,這可能是產品的一個產品CD等。所以我需要知道如何在正則表達式代碼中編寫此屬性變量。通常要引用你說的$ {typeSplitFirstPart}然而,如果我使用反斜槓轉義它仍然不起作用。如果我只是用反斜線轉義$,那麼它會識別並獲取變量值,但會顯示錯誤java.util.regex.PatternSyntaxException。你知道這是如何解決? – CodeGeek123