re = /\b(class|struct)\s+([A-Za-z_]\w*)\s*(:?\s*(public|private|protected)?\s+([A-Za-z_]+))?\s*{(?Us:.*)}\s*;/m
str = '.*(class|struct)\\s+([^{]+)\\s*[:]?([^{]+){
\\b(class|struct)\\s+[A-Za-z_]\\s*\\{
#ifndef STUDENTMODEL_H
#define STUDENTMODEL_H
#include <QAbstractTableModel>v
#include <QList>
class
S : private _jgkdfjgkdlf {};
struct Student {
public:
int id;
QString fio;
QString group;
QString shifr;
double average;
};
class StudentModel
: public QAbstractTableModel
{
Q_OBJECT
public:
explicit StudentModel(QObject* parent = nullptr);
Qt::ItemFlags flags(const QModelIndex& index) const override;
// basic functionality
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
// editable model
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
bool insertRows(int position, int rows, const QModelIndex& parent = QModelIndex()) override;
bool removeRows(int position, int rows, const QModelIndex& parent = QModelIndex()) override;
void resetData(const QList<Student>& newData);
void readFile(const QString& path);
void writeFile(const QString& path);
private:
QList<Student> _studentData;
};
#endif // STUDENTMODEL_H
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html