2012-04-04 15 views
2

の最初の出現までのマッチング:正規表現:言葉と間違っている何

/(?<={).+(?=public)/s 

全文

class WeightConvertor { 

private: 
    double gram; 
    double Kilogram; 
    double Tonnes; 
    void SetGram(double); 
    void SetKiloGram(double); 
    void SetTonnes(double); 
matching end 

public: 
    WeightConvertor(); 
    WeightConvertor(double, double, double); 
    ~WeightConvertor(); 
    void SetWeight(double, double, double); 
    void GetWeight(double&, double& ,double&); 
    void PrintWeight(); 
    double TotalWeightInGram(); 

public: 

}; 

どのように私は、このテキストを一致させることができます:

private: 
    double gram; 
    double Kilogram; 
    double Tonnes; 
    void SetGram(double); 
    void SetKiloGram(double); 
    void SetTonnes(double); 
matching end 

答えて

0

「ドットマッチ改行」スイッチをオンにし、貪欲でない(.*?)マッチを必要とします:

から引用
(?s)(?<={).+?(?=public) 

(?s)スイッチ手段:上

電源を入れ、正規表現の残りのための「ドットは改行にマッチします」。

あなたの正規表現の周りのスラッシュは、正規表現とは何の関係もないことに注意してください - それは、(などのperl、JavaScriptの)言語のことだと実際の質問

+0

opにはすでに '/ s'フラグがあります。問題は、パターンが最初のものではなく、最後の' public'まで一致することです。 – Kobi

+0

@Kobiありがとう、私はそれがスイッチだったのか分からなかった。私は正規表現を知っていますが、perl(私は仮定します) – Bohemian

0

は、私はあなたがこれを必要だと思う:

(?s)(?<={).+?(?=public) 

その答えのようボヘミアンにより投稿されますが、その怠惰なので、それはあなたが望むものと一致します。

関連する問題