2016-12-20 7 views
-1

/**とprivate([var])の間の情報を取得する必要があります。 とjsプログラムの配列に解析します。symfonyエンティティの正規表現

私は現在この正規表現を使用していますが、問題があります。

更新日: これは私に、私はPHPのcrudジェネレータがメインクラスに送信する情報をミラー化する必要がある短いストーリーを短縮するために、私はこれが何を必要とするか尋ねました。注釈とvar名が配列に解析されると、それを使って(Something)を生成します。 私は正確に必要なのは最初のステップです: /**間のすべてを取得する正規表現プライベート$(...); 問題は正規表現が最初のアノテーション/ **を最後のプライベートvarにプルすることです。だから私は、私のrexexの中で、さらなる処理の前に各注釈を壊す何かが必要です。

var myRegexp = /\/\*\*([\s\S\w\W\d\D]+)\*\/([\s]+)private ([\w\W\d\D]+);/g; 
    match = myRegexp.exec(entityString); 

/** 
    * @var string 
    * 
    * @ORM\Column(name="var_1", .....) 
    */ 
    private $var1; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="document_path", ......) 
    */ 
    private $documentPath; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="document_type", .....) 
    */ 
    private $var2; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    */ 
    private $id; 

    /** 
    * @var \......\Entity\SomeEntity 
    * 
    * @ORM\ManyToOne(.....) 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(......) 
    * }) 
    */ 
    private $var3; 
+2

テストケースまたは例をお願いします –

+0

[2つの文字列の間でテキストを抽出する]必要がありますか(http://stackoverflow.com/a/40782646/3832970)? –

+1

[MCVE(最小限完全に検証可能な例)](http://stackoverflow.com/help/mcve)を提供することをお勧めします。 –

答えて

2
/\/\*\*([\s\S\w\W\d\D]+)\*\/([\s]+) 

あなたの正規表現のこの部分は、(https://regex101.com/r/cx2oww/1)良い作品。今

、あなたはドキュメントの後にプライベートVARを取得したい場合は、これを使用することができます:rege101.comの

\/\*\*([\s\S\w\W\d\D]+)\*\/([\s]+)private \$[\s\S\d\D]*\; 

リンク:https://regex101.com/r/cx2oww/2

あなたはexempleため、^ $でこの正規表現を増やすことができますあなたの正規表現の始めと終わりを指定します。あなたのエラーは ";"私的変数の終わりに。

+0

ありがとうございます。それは私が必要としているもののラインに沿っていますが、100%ではありません。私は/ **の間のすべてをプライベート$(...)にする必要があります。それぞれを配列に入れてから、必要なデータの各ビットに各エントリをさらに処理します。 – TheMan68

+0

@ TheMan68私はあなたが '(?!\ n)'のようなオプションを使用して、キャプチャグループを追加して文字列の各プライベート変数を得ることができると思います – Mattasse

+0

ありがとうございます。あなたは大きな助けになった – TheMan68