2016-04-30 10 views
1

私が現在取り組んでいるプロジェクトは安らかなWebバックエンドです。私はこれにSpring MVCを使用します。Select-Stringと正規表現を持つJavaファイルからメソッドシグニチャを取得

しかし、残りのAPIの小さなドキュメントを生成するためにpowershellを使いたいと思います。フロントエンドの開発者にこれを伝えたいと思います。彼はjavaのGUIではないので、私は彼の足でjavaの文書を投げたいだけではありません。

短いストーリーを短くする。私は私のコントローラファイルを探し、@RequestMappingでアノテートされたメソッドのシグネチャを読み取る、スクリプトを記述しようとしている...

例:

@RequestMapping(value="/account", method=RequestMethod.GET) 
public @ResponseBody List<AccountIF> getAll() { 
    return service.getAll(); 
} 

私は読むことができますよ@ prettyと簡単に行えます。しかし、私は正規表現で両方の行を取得しようとすると、私は何も得られません。私は間違って何をやっている

ls -r -i *Controller.java | Select-String -Pattern '@RequestMapping.+\n\t+.+' 

これは私がこれまで持っているものでしょうか?

答えて

3

正規表現が一致しません:あなたのメソッドにはnewline + tab文字はありません。 RequestMapping @

のn \さt + \ + +

あなたはすべてのmethod signatureこれは動作するはず@RequestMappingで飾ら取得したいと仮定すると:。。

Get-ChildItem -Path '.\*Controller.java' | Get-Content -Raw | ForEach-Object { 
    [regex]::Matches($_, '\s*(@RequestMapping.+\))\s+(.+\))').Value.Trim() 
} 

P.S.を補足として、Select-Stringはファイルを行単位で処理しているようですので、マルチライン正規表現はとにかく動作しません。

+0

@RequestMapping。+?\ {'' – AKS

+0

@AKSこれもうまくいくはずです。文字列を別々に抽出するだけで、後で必要に応じて処理しやすくなります。 – beatcracker