Qt-Qt使用QRegExp实现正则表达式处理(Qt5.14.2+win10)
相关资料:
实例代码:
.pro
1 QT += core gui 2 3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 5 CONFIG += c++11 6 7 # The following define makes your compiler emit warnings if you use 8 # any Qt feature that has been marked deprecated (the exact warnings 9 # depend on your compiler). Please consult the documentation of the 10 # deprecated API in order to know how to port your code away from it. 11 DEFINES += QT_DEPRECATED_WARNINGS 12 13 # You can also make your code fail to compile if it uses deprecated APIs. 14 # In order to do so, uncomment the following line. 15 # You can also select to disable deprecated APIs only up to a certain version of Qt. 16 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 17 18 SOURCES += \ 19 main.cpp \ 20 mainwindow.cpp 21 22 HEADERS += \ 23 mainwindow.h 24 25 FORMS += \ 26 mainwindow.ui 27 28 # Default rules for deployment. 29 qnx: target.path = /tmp/$${TARGET}/bin 30 else: unix:!android: target.path = /opt/$${TARGET}/bin 31 !isEmpty(target.path): INSTALLS += target
main.cpp
1 #include "mainwindow.h" 2 3 #include <QApplication> 4 5 int main(int argc, char *argv[]) 6 { 7 QApplication a(argc, argv); 8 MainWindow w; 9 w.show(); 10 return a.exec(); 11 }
mainwindow.h
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 6 QT_BEGIN_NAMESPACE 7 namespace Ui { class MainWindow; } 8 QT_END_NAMESPACE 9 10 class MainWindow : public QMainWindow 11 { 12 Q_OBJECT 13 14 public: 15 MainWindow(QWidget *parent = nullptr); 16 ~MainWindow(); 17 18 private slots: 19 void on_pushButton_clicked(); 20 21 private: 22 Ui::MainWindow *ui; 23 }; 24 #endif // MAINWINDOW_H
mainwindow.cpp
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 #include <QDebug> 4 #include <QTextDocument> 5 #include <QTextBlock> 6 7 MainWindow::MainWindow(QWidget *parent) 8 : QMainWindow(parent) 9 , ui(new Ui::MainWindow) 10 { 11 ui->setupUi(this); 12 13 setWindowTitle(QStringLiteral("Qt使用QRegExp实现正则表达式处理")); 14 15 // 16 ui->textEdit->setText("GUID=100\n" 17 "AAA=98\n" 18 "tttt=99\n" 19 "iiii=88\n" 20 "sdfsdf=9888\n"); 21 ui->textEdit_2->setText(".*=.*"); 22 } 23 24 MainWindow::~MainWindow() 25 { 26 delete ui; 27 } 28 29 30 void MainWindow::on_pushButton_clicked() 31 { 32 QRegExp rx(ui->textEdit_2->toPlainText()); 33 34 QTextDocument* doc = ui->textEdit->document () ; //文本对象 35 int cnt=doc->blockCount () ;//回车符是一个 block 36 37 ui->textEdit_3->clear(); 38 for (int i=0; i<cnt; i++) 39 { 40 QTextBlock textLine = doc->findBlockByNumber(i) ; // 文本中的一段 41 QString str = textLine.text(); 42 bool match = rx.exactMatch(str); 43 if (match) 44 ui->textEdit_3->append(str); 45 } 46 }
mainwindow.ui
1 <?xml version="1.0" encoding="UTF-8"?> 2 <ui version="4.0"> 3 <class>MainWindow</class> 4 <widget class="QMainWindow" name="MainWindow"> 5 <property name="geometry"> 6 <rect> 7 <x>0</x> 8 <y>0</y> 9 <width>629</width> 10 <height>488</height> 11 </rect> 12 </property> 13 <property name="windowTitle"> 14 <string>MainWindow</string> 15 </property> 16 <widget class="QWidget" name="centralwidget"> 17 <widget class="QPushButton" name="pushButton"> 18 <property name="geometry"> 19 <rect> 20 <x>510</x> 21 <y>260</y> 22 <width>81</width> 23 <height>71</height> 24 </rect> 25 </property> 26 <property name="text"> 27 <string>PushButton</string> 28 </property> 29 </widget> 30 <widget class="QLabel" name="label"> 31 <property name="geometry"> 32 <rect> 33 <x>10</x> 34 <y>0</y> 35 <width>54</width> 36 <height>12</height> 37 </rect> 38 </property> 39 <property name="text"> 40 <string>原始数据:</string> 41 </property> 42 </widget> 43 <widget class="QLabel" name="label_2"> 44 <property name="geometry"> 45 <rect> 46 <x>10</x> 47 <y>240</y> 48 <width>81</width> 49 <height>16</height> 50 </rect> 51 </property> 52 <property name="text"> 53 <string>正则表达式:</string> 54 </property> 55 </widget> 56 <widget class="QTextEdit" name="textEdit"> 57 <property name="geometry"> 58 <rect> 59 <x>10</x> 60 <y>20</y> 61 <width>481</width> 62 <height>211</height> 63 </rect> 64 </property> 65 <property name="readOnly"> 66 <bool>false</bool> 67 </property> 68 <property name="placeholderText"> 69 <string/> 70 </property> 71 </widget> 72 <widget class="QTextEdit" name="textEdit_2"> 73 <property name="geometry"> 74 <rect> 75 <x>10</x> 76 <y>260</y> 77 <width>481</width> 78 <height>81</height> 79 </rect> 80 </property> 81 </widget> 82 <widget class="QLabel" name="label_3"> 83 <property name="geometry"> 84 <rect> 85 <x>10</x> 86 <y>340</y> 87 <width>54</width> 88 <height>12</height> 89 </rect> 90 </property> 91 <property name="text"> 92 <string>结果:</string> 93 </property> 94 </widget> 95 <widget class="QTextEdit" name="textEdit_3"> 96 <property name="geometry"> 97 <rect> 98 <x>10</x> 99 <y>360</y> 100 <width>481</width> 101 <height>111</height> 102 </rect> 103 </property> 104 </widget> 105 </widget> 106 </widget> 107 <resources/> 108 <connections/> 109 </ui>
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我