2016-08-23 7 views
0

replaceregexpを使用して、著作権記号と複数のファイルのガベージ文字を検索して置換しようとしましたが、具体的には2000年の日付の日付のものから検索して使用しました。著作権シンボルの後の番号と一致するように非キャプチャグループを作成し、著作権シンボルのみを置き換えます。 しかし、それは何らかの理由でシンボルと番号を置き換えます。ANTスクリプト - 不一致グループのreplaceregexp

© 2007 Mail Services Bla Bla Bla 

を、期待される結果は次のようになります:

例えば、私が一致し

C 2007 Mail Services Bla Bla Bla 

しかし、私は得る:ここで

C Bla Bla Bla 

は私のコードです:

<replaceregexp match="${match.exp}" replace="${replace.str}" byline="true"> 
    <fileset dir="${parent.dir}"> 
     <include name="**/*.js"/> 
     <include name="**/*.jsp"/> 
     <include name="**/*.xml"/> 
     <include name="**/*.properties"/> 
     <include name="**/*.css"/> 
     <include name="**/*.java"/> 
     <!-- Excluding some files --> 
     <exclude name="**/yu.js"/> 
     <exclude name="**/JSMenu.js"/> 
     <exclude name="**/jqueryTimerPack.js."/> 
     <exclude name="**/jqu.js"/> 
     <exclude name="**/jqui.js"/> 
     <exclude name="**/AM.properties"/> 
    </fileset> 
</replaceregexp> 

私が使用している正規表現である:非キャプチャグループは、まだ消費されて交換され

(?:\s*)(©|�|©)(?:\s*20\d\d,\sMail Services) 

答えて

0

、それだけで文字がそのグループ内のパターンにマッチしたという意味で「捕獲」されていませんあなたのために保存されていません。 (この回答を参照してください:Regex non-capturing group is capturing

代わりに、グループをキャプチャし、希望する文字列を再構築するために使用する必要があります。

たとえば、正規表現が(?:\s*)(©|�|©)(?:\s*20\d\d,\sMail Services)の場合は、代わりに(\s*)(©|�|©)(\s*20\d\d,\sMail Services)と置き換え文字列を\1C\2などとしてみてください。最後のグループのコンマが意図したものかどうかはわかりません。あなたが指定した例と一致しないからです。

+0

これは完全に機能しますが、カンマは必要ありませんでしたが、置換文字列は\ 1c \ 3と思われます。 – ROOTKILL