0

私は一日中これに頭をぶつけてきました。シェルコマンドの実行からキャプチャした文字列があり、その文字列を解析してファイルのパスを引き出す必要があります。そのファイルをコピーしようとするまで、私が持っているものは問題なく動作します...私が使用している正規表現は、パスの前に1つの空白文字を残していると思います。これは、後であらゆる種類の問題を引き起こします。

入力文字列のサンプルを次に示します。[echo]P4anthave output = //perforce/dir1/dir2/dir3/dir4/dir5/dir6/dir7 /p4ant/p4ant-2010.1.293250.jar#1-C:\ dir1 \ dir2 \ dir3 \ dir4 \ dir5 \ dir6 \ dir7 \ dir8 \ dir9 \ p4ant \ p4ant-2010.1.293250.jar

そして、それを解析すると、次のようになります。[echo] P4ant local path = C:\ dir1 \ dir2 \ dir3 \ dir4 \ dir5 \ dir6 \ dir7 \ dir8 \ dir9 \ p4ant \ p4ant-2010.1.293250.jar

これは問題ないように見えますが、そこには余分なスペースがあります。私はそれを取り除くことができないようです。これが私が使用しているコードです:

            <propertyregex property="p4ant.local.path"
                  input="${p4ant.have.output}"
                  regexp="([^-][^ ]+?)$"
                  select="\0"
                  casesensitive="false"
            />

「ダッシュスペース」の組み合わせを検索しています。出力にダッシュが含まれていませんが、何らかの理由でスペースが含まれています。

私はここで何が間違っているのですか?ありがとう!

4

1 に答える 1

1
\-\s <-- dash, followed by a whitespace
(.+?) <-- Anything, up to the next matching character
\s  <-- whitespace
(.+)$  <-- Anything, up to the end

それで:
regexp="\-\s(.+?)\s(.+)$"

次に、$1と$2を連結します(申し訳ありませんが、これがANTでどのように機能するかわかりません)

于 2013-03-22T03:32:24.683 に答える