新手问题:
我有一个字符串(每个单词用一个空格分隔):
abc_02.1 1_rel_b121001_10_25_2011.2017 abc_02.1 1_rel_b121001_10_25_2011.6053 abc_02.1 1_rel_b121001_10_25_2011.5643。
我需要使用Ant选择ABC_01.1_REL_B121001_10_25_2011.2017。
AAAA的长度不是固定的,但总是用一个空格与下一个令牌分开。在Ant中最简单/最好的方法是什么?Regex,在n字符之后截断?
使用ant-contrib的属性regex:
<propertyregex property="truncated.string"
input="${input.string}"
regexp="(.*?)(?:s.*|$)"
select="1"
/>
<echo message="My truncated string : ${truncated.string}"/>
用ant 1.8.2和ant-contrib测试。
编辑后OP编辑的问题
<target name="get-rel-baseline-name" depends="init-property">
<exec executable="cleartool" outputproperty="baselinelist">
<arg value="lsstream"/>
<arg value="-fmt"/>
<arg value="""/>
<arg value="%[latest_bls]p"/>
<arg value="""/>
<arg value="stream:${SOURCE_STREAM}@Res_VOB"/>
</exec>
<propertyregex property="RLS_Baseline"
input="${baselinelist}"
regexp="(.*?)(?:s.*|$)"
select="1"/>
<echo message="The original list is ${baselinelist}"/>
<echo message="${line.separator}Truncated list is ${RLS_Baseline}"/>
给出了输出
[echo] The original list is A_12.1_REL_B121001_10_25_2011.2017 A_12.1_REL_B121001_10_25_2011.6053.....
等为10条基线
[echo]
[echo] Truncated list is
基本上它不会选择任何带有1的东西。
如果我输入 它当然会选择整个字符串RLS_Baseline
的值与A_12.1_REL_B121001_10_25_2011.2017 A_12.1_REL_B121001_10_25_2011.6053.....
的值相同
在OP请求后重新编辑:
<propertyregex property="truncated.string"
input="${input.string}"
regexp="s*(b(w|.)+b)"
select="1"
/>
<echo message="My truncated string : ${truncated.string}"/>
这就是我目前的工作
regexp="s*(b(w|.)+b)"