截断或正则表达式



新手问题:

我有一个字符串(每个单词用一个空格分隔):

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="&quot;"/>           
            <arg value="%[latest_bls]p"/>
            <arg value="&quot;"/>
            <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)"

相关内容

  • 没有找到相关文章

最新更新