6

次の行がファイルに含まれています。このファイルから複数のデータを抽出したいと思います。

現在のユーザービルドリストの数:23

  • 'RevisionBuild'実行時間(分単位)= 8.40

[ビルド]RC= 0

次の正規表現を使用して、このファイルから値23を取得しました

<ac:for param="line" list="${logFileContent}" delimiter="${line.separator}">
  <sequential>                          
<propertyregex property="noOfBuildlists"
         input="@{line}"
     regexp="(.*)Number of current user build lists: (.*)$"
     select="\2"/>  
  </sequential>
</ac:for>

しかし、regexp = "(。 )[revBuild] RC =(。)$"やregexp = "(。)'RevisionBuild'実行時間(分単位)などの他の行をフェッチしようとすると、同じ正規表現は値をフェッチしません。 )=(。)$ "ここで、抽出された値はそれぞれ0と8.40である必要があります。

誰か助けてもらえますか?ありがとう、Aarthi

4

2 に答える 2

11

これはあなたが興味を持っていることだと思います。以下のような入力ファイルで

Number of current user build lists: 23
'RevisionBuild' Run time (in minutes) = 8.40
[Build] RC = 0

ターゲットの下で実行すると

<project name="BuildModule" basedir="." default="extract.nums">
    <taskdef resource="net/sf/antcontrib/antlib.xml" />
    <property environment="env" />
    <loadfile property="file" srcfile="${basedir}/inputLog.log"/>
    <target name="extract.nums">
        <for param="line" delimiter="${line.separator}" list="${file}">
            <sequential>
                <propertyregex property="noOfBuildlists" input="@{line}" regexp="Number of current user build lists:\s*([0-9]+)$" select="\1" />
                <propertyregex property="revisionBuild" input="@{line}" regexp="'RevisionBuild' Run time\s*\(in minutes\)\s*=\s*([0-9\.]+)$" select="\1" />
                <propertyregex property="rcBuild" input="@{line}" regexp="\[Build\] RC\s*\=\s*([0-9]+)$" select="\1" />
            </sequential>
        </for>
        <echo message="Current user build : ${noOfBuildlists}" />
        <echo message="Revision Build : ${revisionBuild}" />
        <echo message="RC Build : ${rcBuild}" />
    </target>
</project>

出力を下回ります。

[echo] Current user build : 23
[echo] Revision Build : 8.40
[echo] RC Build : 0
于 2012-07-30T10:00:05.717 に答える
1

を使用するpropertyregexと、エラーが表示されますif doesn't support the nested "condition" element。my にはネストされた「条件」要素が多数あります{android.sdk.air}/tools/ant/build.xml。そこで、標準の Ant が提示できる解決策を見つけようとしました。やった。

これを試して:

<loadfile
    encoding="UTF-8"
    property="property.for.your.string"
    srcFile="your/file/path" >
        <filterchain>
            <tokenfilter>
                <containsregex
                    pattern="Number of current user build lists:\s*([0-9]+)$"
                    replace="\1" />
            </tokenfilter>
        </filterchain>
</loadfile>

<echo message="DEBUG LOG: property.for.your.string = ${property.for.your.string}" />

なぜアリが属性を「置換」と名付けたのか、それが私の誤解につながっているのではないかと思います。

于 2015-02-12T11:14:23.953 に答える