5

次のテキストファイルがあります。

    マニフェスト-バージョン:3.0.0
    Ant-バージョン:Apache Ant 1.7.1
    作成者:10.0-b19(Sun Microsystems Inc.)
    Require-Bundle:org.eclipse.linuxtools.cdt.libhover; bundle-version="1。
     1.0 "
    バンドル-SymbolicName:com.qnx.doc.gestures.lib_ref
    バンドルバージョン:3.0.0.20121120
    バンドル-ローカリゼーション:プラグイン
    バンドル名:%plugin.name
    バンドル-ベンダー:%plugin.providername

そして、replaceregexpタスクで次のパターンを使用しようとしています

    regexp pattern ='Require-Bundle:org.eclipse.linuxtools.cdt.libhover; bundle-version="1。
   [\ s \ S] * '

これで終わるには:

    マニフェスト-バージョン:3.0.0
    Ant-バージョン:Apache Ant 1.7.1
    作成者:10.0-b19(Sun Microsystems Inc.)
     1.0 "
    バンドル-SymbolicName:com.qnx.doc.gestures.lib_ref
    バンドルバージョン:3.0.0.20121120
    バンドル-ローカリゼーション:プラグイン
    バンドル名:%plugin.name
    バンドル-ベンダー:%plugin.providername

問題は私がこれを取得し続けることです:

    マニフェスト-バージョン:3.0.0
    Ant-バージョン:Apache Ant 1.7.1
    作成者:10.0-b19(Sun Microsystems Inc.)

     1.0 "
    バンドル-SymbolicName:com.qnx.doc.gestures.lib_ref
    バンドルバージョン:3.0.0.20121120
    バンドル-ローカリゼーション:プラグイン
    バンドル名:%plugin.name
    バンドル-ベンダー:%plugin.providername

空の行を取り除くための正規表現はどうあるべきですか?

ありがとう。

4

2 に答える 2

3

このようなものが機能するはずです:

Require-Bundle: org\.eclipse\.linuxtools\.cdt\.libhover;bundle-version="1\.\s*1.0"\s*

(と\s*を含む0個以上の空白文字を照合するために使用します)ただし、マニフェストファイルを処理しているため、適切なマニフェストパーサーを使用する方が理にかなっています。残念ながら、Antタスクは属性を削除する方法を提供していませんが、タスクを使用すると非常に簡単です。\r\n<manifest><script>

<property name="manifest.file" location="path/to/manifest.txt" />

<script language="javascript"><![CDATA[
    importPackage(java.io);
    importPackage(java.util.jar);

    // read the manifest
    manifestFile = new File(project.getProperty('manifest.file'));
    manifest = new Manifest();
    is = new FileInputStream(manifestFile);
    manifest.read(is);
    is.close();

    // remove the offending attribute
    manifest.getMainAttributes().remove(new Attributes.Name('Require-Bundle'));

    // write back to the original file
    os = new FileOutputStream(manifestFile);
    manifest.write(os);
    os.close();
]]></script>
于 2012-11-20T22:12:48.583 に答える
1
<replaceregexp file="manifest.mf" match='Require-Bundle: org.eclipse.linuxtools.cdt.libhover;bundle-version=\"[^\"]+\"[\r\n]*' replace="" flags="m"/>

これは私のために働きます。

于 2012-11-20T22:27:05.273 に答える