是否有可能从ant中的用户定义属性中获取子字符串



我在myprop中定义了一些属性。属性文件的格式如下:

my.first.prop = D:/MyFolder/abc/expanded/myfile.txt

在我的ant目标中,我可以通过使用${my.first.prop}表达式将该字符串用作属性。现在我想获得expanded前的子字符串也就是D:/MyFolder/abc/

我如何在蚂蚁目标中做同样的事情?

解决方案:好了,经过一些尝试,下面的regexp给了我所需的输出-
<target name="myTarget">
     <propertyregex
                property="first.part"
                input="${my.first.prop}"
                regexp="(.*)expanded(.*)$"
                select="1"/>
    <echo>${first.part}</echo>
</target>

然而,我想了解我写的正则表达式(.*)表示什么以及为什么它在expanded之前和之后。$代表什么?

根据Ant Contrib PropertyRegex任务:

对输入字符串执行正则表达式操作,并将结果设置为一个属性。可以执行两种不同的操作:

  • Replacement -匹配的正则表达式被替换为替换模式
  • Selection—通过选择表达式选择正则表达式中的分组。

选择表达式的语法与正则表达式替换模式相同。

 indicates the entire property name (default).
1 indicates the first grouping
2 indicates the second grouping
etc... 

(.*)expanded(.*)$ -表示expanded之前和之后的任何内容。
因此匹配如粗体所示:
D:/MyFolder/abc/ expanded /myfile.txt

您想要正则表达式匹配组的第一部分。(.*)expanded(.*)$ - regex发现D:/MyFolder/abc/propertyregex任务的select="1"属性

select = "2"将获取值/myfile.txt,这是最后一次与给定的正则表达式匹配my.first.prop属性值。

$在regex中的意义在于字符串

结束

相关内容

  • 没有找到相关文章

最新更新