【问题标题】:regular expression and Ant正则表达式和 Ant
【发布时间】:2013-01-17 00:30:06
【问题描述】:

以前有人使用过 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} 已被正确读取,其值“模板”已写入。

谢谢,

【问题讨论】:

    标签: regex ant


    【解决方案1】:

    看起来列表中的最后一个破折号需要转义:

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

    【讨论】:

    • - java.util.regex.PatternSyntaxException: 索引 0 附近的非法重复 ${typeSplitFirstPart}:([a-zA-Z,0-9\-]+)([;])?
    • 逗号也需要转义。
    • 也需要找逗号...逃不掉
    • 逗号仅用于确定出现间隔,如[a-z]{1,5}。如果你也想匹配字符,,正确的正则表达式是([a-zA-Z\,0-9\-]+)
    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2013-02-22
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多