有什么问题:
/(?<={).+(?=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 :(得分:11)
你想要一个懒惰的比赛:
/(?<={).+?(?=public)/s
另见:What is the difference between .*? and .* regular expressions?
(我也回答,似乎)
答案 1 :(得分:1)
我认为你需要这个:
(?s)(?<={).+?(?=public)
它就像波希米亚人发布的答案一样,但是很懒,所以它符合你想要的。
答案 2 :(得分:0)
您需要启用“点匹配换行符”开关,并且需要非贪婪(.*?
)匹配:
(?s)(?<={).+?(?=public)
从regex bible引用,(?s)
开关表示:
为正则表达式的其余部分启用“dot matches newline”。
请注意,正则表达式周围的斜线与正则表达式无关 - 这是一种语言事物(perl,javascript等),与实际问题无关