正则表达式和Ant

时间:2013-01-16 16:17:42

标签: regex ant

之前有没有人使用过ant属性和正则表达式?如果是这样,您是否知道如何更正此字符串以使其正常工作?

<replaceregexp 
file="../cms-distribution/src/main/properties/editorial/common/csdtflags.properties" 
flags="s" 
match="${typeSplitFirstPart}:([a-zA-Z,0-9-]+)([;])?"
replace="${typeSplitFirstPart}:\1,${uid}\2"
byline="true"/>



Error : java.util.regex.PatternSyntaxException: Illegal repetition near index 0

${typeSplitFirstPart}:([a-zA-Z,0-9-]+)([;])?

TypeSplitFirstPart是一个ant属性,因此需要以这种方式引用它 - $ {typeSplitFirstPart}来获取值。需要使用反斜杠转义$,{,}之类的特殊字符,但是它不会获取属性的值。转义$仅检索typeSplitFirstPart的值但是它会抛出此错误 -

java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 1

\Template:([a-zA-Z,0-9-]+)([;])?

注意 - 此处${typeSplitFirstPart}已正确读取,其值为“模板”。

谢谢,

1 个答案:

答案 0 :(得分:1)

看起来列表中的最后一个短划线需要转义:

([a-zA-Z0-9\-]+)