如何通过蚂蚁的正则表达来获取指数



我有一个带有版本的字符串为 .v_september (每个月都会有所不同)。在此中,我想在下划线后取值,这意味着" sep" (仅前3个字母)。

通过使用正则 .v _(。*)我能够完成完整的月份,无法单独获得前3个字母。

有人可以帮助我如何在Apache Ant中实现这一目标。谢谢!

在属性上的正则函数在本机蚂蚁中有点尴尬(与文件中的文本一起使用)。Ant-Contrib具有replaceregexp任务,但我尽可能避免蚂蚁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})

demo