我在myprop.properties文件中定义了以下格式的某些属性:
my.first.prop = D:/MyFolder/abc/expanded/myfile.txt
在我的ant目标中,我可以使用${my.first.prop}
表达式将该字符串用作属性。现在我想获得单词expanded
之前的子串D:/MyFolder/abc/
我如何在蚂蚁目标中做同样的事情?
解决方案:好的,经过一些试验,以下正则表达式给了我所需的输出 -
<target name="myTarget">
<propertyregex
property="first.part"
input="${my.first.prop}"
regexp="(.*)expanded(.*)$"
select="\1"/>
<echo>${first.part}</echo>
</target>
但是,我想了解我写的正则表达式(.*)
表示什么,以及为什么它在expanded
之前和之后。 $
表示什么呢?
答案 0 :(得分:1)
根据Ant Contrib PropertyRegex
Task:
对输入字符串执行正则表达式操作,并将结果设置为属性。可以执行两种不同的操作:
- 替换 - 匹配的正则表达式替换为替代模式
- 选择 - 通过选择表达式选择正则表达式中的分组。
使用与正则表达式替换模式相同的语法选择表达式。
\0 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(.*)$
- 正则表达式将D:/MyFolder/abc/
视为select="\1"
任务的propertyregex
属性。
select = "\2"
会获取值/myfile.txt
,这是与给定正则表达式相对于my.first.prop
属性值的最后一个匹配项。
正则表达式中$
的重要性是字符串