using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\b(class|struct)\s+([A-Za-z_]\w*)\s*(:?\s*(public|private|protected)?\s+([A-Za-z_]+))?\s*{(?Us:.*)}\s*;";
string input = @".*(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
";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx