2016-10-06 18 views
1

私は、次の形式でmyprop.propertiesファイルで定義された特定のプロパティがあります:私は${my.first.prop}式を使って、プロパティとして、その文字列を使用することができます私のAntターゲットでantのユーザ定義プロパティから部分文字列を取得することは可能ですか?

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

を。今すぐ単語の前に部分文字列を取得したい D:/MyFolder/abc/

これはどのようにしてantターゲットで実行できますか?

ソリューション:わかりました、いくつかの試験の後、次の正規表現は、しかし、私が何を(.*)を意味し、なぜそれが前とexpanded後の両方でない私が書かれている正規表現を理解したい

<target name="myTarget"> 
    <propertyregex 
       property="first.part" 
       input="${my.first.prop}" 
       regexp="(.*)expanded(.*)$" 
       select="\1"/> 
    <echo>${first.part}</echo> 
</target> 

出力 - 必要な私を与えました。 $の意味は? Ant Contrib PropertyRegex Task 1として

答えて

1

は、入力文字列に正規表現の操作を実行し、そしてプロパティに結果を設定します。 - マッチした正規表現がsubstititionパターン

  • の選択で置換されている - 正規表現内のグループ化選択式を経て選ばれ

    • 交換:実行することができる2つの異なる操作があります。

    式は、正規表現の置換パターンと同じ構文で選択されます。

    \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"は、my.first.propプロパティ値に対して指定された正規表現と最後に一致する値/myfile.txtをフェッチします。

    正規表現での$の重要性は、それが文字列の最後です。

    関連する問題