9

何が問題なのですか :

/(?<={).+(?=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
4

3 に答える 3

14

レイジーマッチが必要です:

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

参照: .* との違いは何ですか? および .* 正規表現?
(私も答えたようです)

于 2012-04-04T18:10:48.547 に答える
1

「ドットマッチ改行」スイッチをオンにし、欲張りでない(.*?)マッチをオンにする必要があります。

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

正規表現の聖書から引用すると、(?s)スイッチは次のことを意味します。

正規表現の残りの部分については、「ドットが改行に一致する」をオンにします。

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

于 2012-04-04T18:08:56.267 に答える
1

これが必要だと思います:

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

ボヘミアンが投稿した回答に似ていますが、怠惰なので、必要なものと一致します。

于 2012-04-04T18:13:51.210 に答える