之前有没有人使用过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}
已正确读取,其值为“模板”。
谢谢,
答案 0 :(得分:1)
看起来列表中的最后一个短划线需要转义:
([a-zA-Z0-9\-]+)