QT正则表达式QRegExp的解析
qstring 正则表达式
![qstring 正则表达式](https://img.taocdn.com/s3/m/fc7a26065b8102d276a20029bd64783e09127d03.png)
qstring 正则表达式
QString 是 Qt 框架中的一个字符串类,它提供了丰富的字符串操作方法,包括字符串拼接、查找、替换等。
在使用 QString 进行字符串处理时,常常需要使用正则表达式来匹配和筛选字符串中的内容。
正则表达式是一种用于描述字符串模式的语法,可以用来匹配符合某种规律的字符串。
在 Qt 中,可以使用 QRegExp 类来处理正则表达式。
QRegExp 提供了许多正则表达式相关的方法,例如匹配、替换、捕获等。
下面是一些常用的正则表达式示例,可以用来匹配和筛选QString 中的内容:
1. 匹配数字:^d+$
这个正则表达式可以匹配一个或多个数字,包括整数和小数。
2. 匹配字母:^[a-zA-Z]+$
这个正则表达式可以匹配一个或多个英文字母。
3. 匹配邮箱地址:^[w.-]+@w+.w+$
这个正则表达式可以匹配标准的邮箱地址格式,包括用户名、@符号和域名。
4. 匹配网址:
^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$ 这个正则表达式可以匹配标准的网址格式,包括 http(s):// 开头、域名、路径等部分。
除了以上示例,还有许多其他的正则表达式格式可以用来处理字符串。
在实际使用中,需要根据具体的需求来选择适合的正则表达式。
同时,需要注意正则表达式的匹配规则和性能,以避免出现不必要的错误和延迟。
qregexp匹配整数正则表达式
![qregexp匹配整数正则表达式](https://img.taocdn.com/s3/m/18ab0a3c1611cc7931b765ce0508763230127453.png)
qregexp匹配整数正则表达式QRegExp是Qt中的正则表达式类,用于进行字符串匹配和处理。
正则表达式是一种强大的工具,它能够根据指定的模式匹配字符序列。
本文将介绍如何使用QRegExp来匹配整数的正则表达式,并详细解释每一步的过程。
第一步,我们需要创建一个QRegExp对象,用于存储要匹配的正则表达式。
在本例中,我们想要匹配整数,所以我们可以使用"\d+"作为模式。
这个模式表示一个或多个数字。
cppQRegExp integerRegExp("\\d+");第二步,我们需要一个字符串来进行匹配。
在本例中,我们可以使用"123"作为测试字符串。
cppQString testString("123");第三步,我们使用QRegExp的exactMatch()函数来检查字符串是否与正则表达式相匹配。
cppbool isMatch = integerRegExp.exactMatch(testString);在本例中,由于测试字符串"123"只包含数字,所以它与正则表达式相匹配,isMatch的值为true。
第四步,我们可以使用QRegExp的indexIn()函数来查找第一个匹配的位置。
这个函数返回匹配的起始位置的索引。
如果没有找到匹配,返回-1。
cppint matchIndex = integerRegExp.indexIn(testString);在本例中,正则表达式匹配的起始位置是0,所以matchIndex的值为0。
第五步,我们可以使用QRegExp的cap()函数来获取第一个匹配的字符串。
cppQString matchedString = integerRegExp.cap(0);在本例中,正则表达式匹配的字符串是"123",所以matchedString的值为"123"。
qregularexpression类详解
![qregularexpression类详解](https://img.taocdn.com/s3/m/30d572d26aec0975f46527d3240c844769eaa08e.png)
QRegularExpression 类详解正则表达式是一种强大的文本匹配工具,它可以在文本中快速地进行模式匹配和替换操作。
Qt框架提供了 QRegularExpression 类来支持正则表达式的使用,本文将对QRegularExpression 类进行详细解析,包括类的概述、使用方法、常用函数以及示例代码。
1. 类的概述QRegularExpression 类是 Qt 框架中用于处理正则表达式的类,它提供了丰富的函数和方法来支持正则表达式的创建、匹配和替换操作。
使用 QRegularExpression 类可以方便地进行文本模式匹配,并且在性能上有较好的表现。
2. 使用方法QRegularExpression 类的使用方法较为简单,首先需要创建一个QRegularExpression 对象,然后利用该对象进行匹配或替换操作。
可以通过构造函数直接创建一个 QRegularExpression 对象,也可以通过静态函数 QRegularExpression::fromPattern() 来创建对象。
3. 常用函数QRegularExpression 类提供了丰富的函数来支持正则表达式的使用,常用函数包括:- pattern():返回正则表达式的模式字符串。
- isValid():判断正则表达式是否有效。
- match():在文本中匹配正则表达式。
- replace():替换文本中的匹配部分。
- globalMatch():在整个文本中查找所有的匹配项。
- capturedTexts():返回匹配到的文本。
通过这些函数,可以轻松地对文本进行正则表达式的匹配和替换操作。
4. 示例代码下面是一个简单的示例代码,演示了如何使用 QRegularExpression类来进行文本匹配和替换:```c++#include <QCoreApplication>#include <QRegularExpression>#include <QDebug>int m本人n(int argc, char *argv[])QCoreApplication a(argc, argv);QString text = "Hello, World!";QRegularExpression re("\\b\\w+\\b");QRegularExpressionMatch match = re.match(text);if (match.hasMatch()) {qDebug() << "Matched: " << match.captured();}QString replaced = text.replace(re, "Qt");qDebug() << "Replaced: " << replaced;return a.exec();}```在上面的示例代码中,首先创建了一个QRegularExpression 对象re,然后利用 match() 函数进行匹配操作,并使用 replace() 函数进行替换操作。
qt 正则表达式 十六进制
![qt 正则表达式 十六进制](https://img.taocdn.com/s3/m/2aa41597250c844769eae009581b6bd97e19bc57.png)
qt 正则表达式十六进制摘要:1.引言2.正则表达式的基本概念3.Qt 中的正则表达式4.十六进制与正则表达式的关系5.总结正文:1.引言正则表达式是一种强大的文本处理工具,广泛应用于编程中。
特别是在Qt 中,正则表达式被广泛应用于各种文本处理场景。
本文将详细介绍Qt 中的正则表达式以及十六进制与正则表达式的关系。
2.正则表达式的基本概念正则表达式(Regular Expression),简称regex,是一种用于处理字符串的强大工具。
它可以用来检查字符串是否符合某种模式、提取字符串中的特定部分或者替换字符串中的某些内容。
正则表达式中的特殊字符和元字符可以帮助我们更精确地描述匹配模式。
3.Qt 中的正则表达式Qt 提供了丰富的正则表达式支持,主要通过QRegExp 类来实现。
QRegExp 类提供了构造函数、匹配方法、替换方法和分组方法等,方便我们在程序中使用正则表达式进行各种操作。
4.十六进制与正则表达式的关系在Qt 中,正则表达式可以处理Unicode 字符集,这使得处理中文字符变得更加方便。
而十六进制表示法可以用来表示Unicode 字符集中的所有字符。
因此,在Qt 的正则表达式中,我们可以使用十六进制表示法来匹配中文字符。
例如,要匹配一个中文字符,可以使用如下正则表达式:```[u4e00-u9fa5]```这里,`u4e00`和`u9fa5`是两个十六进制表示的中文字符范围。
5.总结本文介绍了Qt 中的正则表达式以及十六进制与正则表达式的关系。
正则表达式是一种强大的文本处理工具,在Qt 中得到了广泛的应用。
qregularexpression 正则表达式
![qregularexpression 正则表达式](https://img.taocdn.com/s3/m/1adda64a53ea551810a6f524ccbff121dc36c559.png)
正则表达式是一种用来描述字符串模式的工具,它在计算机科学和编程领域中被广泛应用。
正则表达式可以用来匹配、搜索和替换文本中的特定模式,因此在数据处理、文本编辑、网络爬虫等方面都有重要的作用。
本文将从基本概念、语法规则、常见用法等方面对正则表达式进行全面介绍,并为读者提供实用的使用技巧和注意事项。
一、基本概念正则表达式是由普通字符(如字母、数字、符号等)和特殊字符(如元字符、限定符等)组成的字符串,它可以描述一个字符串的特定模式。
在正则表达式中,普通字符一般表示它本身,而特殊字符则会具有特定的匹配含义。
正则表达式中的"."表示匹配任意一个字符,"*"表示匹配前一个字符的零次或多次,"?"表示匹配前一个字符的零次或一次,等等。
二、语法规则1. 普通字符:任何非特殊字符都是普通字符,在正则表达式中表示它本身。
2. 元字符:具有特殊含义的字符,如"."、"*"、"?"等。
3. 字符类:用"[]"表示,匹配括号中任意一个字符。
"[abc]"表示匹配"a"、"b"或"c"。
4. 限定符:用"{m,n}"表示,匹配前一个字符的至少m次,至多n次。
"a{1,3}"表示匹配"aa"、"aaa"或"a"。
5. 转义字符:用"\"表示,将特殊字符转义为普通字符。
"\."表示匹配"."。
6. 分组:用"()"表示,将多个字符作为一个整体进行匹配。
"(ab)+"表示匹配一个或多个"ab"。
7. 锚点:用"^"表示行的开头,用"$"表示行的结尾。
Qt——正则表达式
![Qt——正则表达式](https://img.taocdn.com/s3/m/9770b7741611cc7931b765ce0508763231127422.png)
Qt——正则表达式在项⽬中经常会遇到对字符串进⾏操作的情况,我们可以直接使⽤QString的⼀些函数,但QT提供了⼀个更加强⼤的类——QRegExp,使⽤正则表达式来操作字符串。
先说说我最近遇到的⼏个问题:1.对输⼊框LineEdit中的输⼊内容加以限制,⽐如只能输⼊数字,并且最多5位数(因为int类型不限制位数会导致溢出问题);2.检查输⼊是否正确,⽐如判断是否是1-9999之间的数;3.获取⼀个字符串中的⼀段内容,⽐如获取2015-11-20中的2015。
为了解决这些问题,下⾯先看看正则表达式的基本知识。
⼀、基本知识正则表达式(Regular Expression,通常简写为RegExp、RE等),预先定义⼀些字符或字符的组合,⽤于匹配⽂本中的⼀段字符串。
下⾯是它的⼀些⽤途——1.验证判断字符串是否符合某个标准,⽐如“是⼀个整数”或者“没有空格”。
2.搜索正则表达式提供了⽐普通字符串匹配更为强⼤的匹配⽅式,⽐如匹配下⾯的词语:mail, letter, correspondence,但是不包括email, mailman, letterbox等等。
3.查找并替换正则表达式能够⽤⼀个不同的字符串,替换所有出现另⼀个字符串的地⽅,⽐如⽤&替换&,如果原先&后⾯已经有了amp;那么不替换。
4.分割字符串⽐如,根据tab来分割字符串。
使⽤正则表达式⾸先需要了解⼀些符号的作⽤,⽐如\d⽤来匹配数字,下⾯结合⼀些例⼦说明。
注意:C++编译器会对反斜杠进⾏转换,要想在正则表达式中包括⼀个\,需要输⼊两次,例如\\s。
要想匹配反斜杠本⾝,需要输⼊4次,⽐如\\\\。
⼆、在QT中的⽤法void QLineEdit::setValidator(const QValidator * v)如果输⼊与正则表达式相匹配,则返回Acceptable;如果部分匹配,则返回Intermediate(部分匹配,意思是如果给它增加额外的字符则能够匹配正则表达式);如果不匹配则返回Invalid。
qt 正则表达式
![qt 正则表达式](https://img.taocdn.com/s3/m/bc14aac480c758f5f61fb7360b4c2e3f572725be.png)
qt 正则表达式Qt是一款流行的跨平台C++应用程序框架,它提供了许多实用的工具和类库,包括正则表达式类库。
在 Qt 中,我们可以使用正则表达式来搜索、匹配和替换文本,这对于文本处理和数据处理是非常有用的。
本文将介绍 Qt 正则表达式的基本用法和一些高级技巧。
一、Qt 正则表达式基础1. 正则表达式概述正则表达式是一种描述字符串模式的方法,它可以用来匹配、搜索和替换文本中的特定模式。
正则表达式由一些特殊字符和普通字符组成,它们可以表示字符集、重复次数、分组和位置等概念。
在 Qt 中,我们使用 QRegExp 类来表示正则表达式,它提供了一些方便的方法来操作文本。
2. 正则表达式语法Qt 支持 POSIX 和 Perl 正则表达式语法,它们有一些不同的特点和语法。
下面是一些常用的正则表达式语法:- 字符集:用方括号 [] 表示,可以匹配其中任意一个字符,如[abc] 匹配 a、b 或 c。
- 重复次数:用花括号 {} 表示,可以指定匹配的重复次数,如a{3} 匹配三个连续的 a。
- 通配符:用点号 . 表示,可以匹配任意一个字符,如 a.b 匹配以 a 开头、以 b 结尾,中间有一个任意字符的字符串。
- 转义字符:用反斜杠表示,可以转义特殊字符,如 d 表示数字字符,s 表示空白字符。
- 分组:用圆括号 () 表示,可以将一些字符组成一个子模式,并对其进行重复次数和位置的匹配,如 (ab)+ 匹配连续的 ab 子串。
- 锚点:用 ^ 和 $ 表示,可以匹配行的开头和结尾位置,如^abc$ 匹配只包含 abc 的一行文本。
3. Qt 正则表达式类库在 Qt 中,我们使用 QRegExp 类来表示正则表达式,它提供了一些常用的方法来操作文本。
下面是一些常用的 QRegExp 方法:- 构造函数:用于创建 QRegExp 对象,可以传入正则表达式字符串和匹配选项。
- setPattern():用于设置正则表达式字符串。
qregexp匹配整数正则表达式 -回复
![qregexp匹配整数正则表达式 -回复](https://img.taocdn.com/s3/m/c7c5086d657d27284b73f242336c1eb91a3733c2.png)
qregexp匹配整数正则表达式-回复标题:QRegExp匹配整数正则表达式正则表达式是一种强大的文本处理工具,能够用来描述和匹配各种复杂的字符串模式。
在Qt框架中,QRegExp类提供了一种使用正则表达式进行字符串操作的方法。
本文将详细介绍如何使用QRegExp来匹配整数。
一、QRegExp简介QRegExp是Qt库中的一个类,用于处理正则表达式。
它可以用来查找、替换或分割字符串中的特定模式。
QRegExp支持Perl兼容的正则表达式语法,包括量词、字符集、反向引用等高级特性。
二、整数的正则表达式要匹配整数,我们需要构建一个正则表达式来描述整数的特征。
整数可以是正数、负数或零,没有小数部分。
下面是一个简单的正则表达式,可以匹配所有的整数:\d+这个表达式的含义是匹配一个或多个数字(等价于[0-9])。
但是,这个表达式不能匹配负数和零。
为了匹配负数,我们需要添加一个负号的选项。
同时,我们还需要添加一个选项来匹配零。
下面是改进后的正则表达式:-?\d+这个表达式的含义是匹配一个可选的负号,后面跟着一个或多个数字。
现在,这个表达式可以匹配所有的整数了。
三、使用QRegExp匹配整数有了整数的正则表达式,我们可以开始使用QRegExp来匹配整数了。
首先,我们需要创建一个QRegExp对象,并将我们的正则表达式传入构造函数:cppQRegExp regex("-?\\d+");然后,我们可以使用QRegExp的exactMatch()方法来检查一个字符串是否完全匹配我们的正则表达式:cppif (regex.exactMatch("123")) {qDebug() << "Matched!";} else {qDebug() << "Not matched.";}在这个例子中,"123"会匹配我们的正则表达式,所以程序会输出"Matched!"。
Qt中常用知识点
![Qt中常用知识点](https://img.taocdn.com/s3/m/d2efce4176232f60ddccda38376baf1ffc4fe3c6.png)
Qt中常⽤知识点1:QRegExp 正则表达式QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}");xxx->setValidator(new QRegExpValidator(regExp,this));lineEdit->setValidator(new QRegExpValidator(regExp,this));2:QObject::connect()connect(objectA,SIGNAL(methodA()),objectB,SLOT(methodB()));//methodA()的输⼊参数可以⽐methodB()的参数多3:QLineEdit ⾏⽂字输⼊widgetlineEdit->hasAcceptableInput(); //返回true or falselineEdit->setText("please input text");button->setEnabled(true); //set true or false4:信号函数的定义和发射class A {Q_OBJECTsignals:void funs(type A,type B); //定义信号函数};type a;type b;emit funs(a,b);//发射上⾯定义的信号函数,当然需要使⽤QObjetc::connect()这个函数把这个信号函数与真实的slot函数绑定起来,slot函数才是真正⼲活的函数5:Qt中可以动态调整窗⼝⼤⼩的Widget有哪些QTabWidgetQListWidget 和 QStackedWidget 配合使⽤QTreeWidget 和 QStackedWidget 配合使⽤6:对⼀个继承QDialog的类,能动态改变窗⼝⼤⼩的⽅法如下://隐藏必要的⼦Widgetxx->hide();yy->hide();//下⾯这个⽅法⾮常关键,会根据xx,yy⼦widget是否显⽰,动态调整窗⼝的⼤⼩layout()->setSizeConstraint(QLayout::SetFixedSize);7:创建⼀个Qt风格的⼦类class MyClass: pulbic QObject{public:MyClass(const string& text,QObject *parent=0);};MyClass::MyClass(const string& text,QObject *parent): QObject(parent){//构造函数的定义}8:QList的使⽤例⼦QList<QString> list;list<<"foo"<<"bar"<<"baz";foreach(QString a,list)qDebug()<<a;#相当好⽤的QListQList<QString> list;list << "first";list.append( "second" );list.prepend( "third" );list.insert( 1, "fourth" );list.insert( 4, "fifth" );9:Qt迭代器的⽤法QList<int> list;list << 23 << 27 << 52 << 52;QListIterator<int> javaIter( list );while( javaIter.hasNext() )qDebug() << javaIter.next();QList<int>::const_iterator stlIter;for( stlIter = list.begin(); stlIter != list.end(); ++stlIter ) qDebug() << (*stlIter);10:使⽤迭代器修改list的元素QList<int> list;list << 27 << 33 << 61 << 62; QMutableListIterator<int> javaIter( list );while( javaIter.hasNext() ){int value = javaIter.next() + 1;javaIter.setValue( value );qDebug() << value;}QList<int>::Iterator stlIter;for( stlIter = list.begin(); stlIter != list.end(); ++stlIter ) {(*stlIter) = (*stlIter)*2;qDebug() << (*stlIter);}11:所有widget的分类button:QPushButtonQToolButtonQRadioButtonbox:QCheckBoxQGroupBoxQToolBoxQSpinBoxQDoubleSpinBoxQComboBoxedit:QLineEditQTextEditQDateEditQTimeEditQDateTimeEditwidget:QTabWidgetview:QListViewQTreeViewQTableViewdialog:QInputDialogQProgressDialogQColorDialogQFontDialogQPageSetupDialogQFileDialogQPrintDialogothers:QFrame QLabel QLCDNumber QProgressBarQTextBrowser QSlider QDialQMessageBox QErrorMessage12:在主窗⼝程序中打开新的dialog对话框的⽅式#1 阻塞式:(主窗⼝的内容是⽆法访问的)QDialog dialog;Ui_Dialog a;a.setupUi(&dialog);if(dialog.exec()) // 当点下ok button时会返回accept=true,当点下cancel时会返回reject=0 {}#2 ⾮阻塞式:(访问⼦dialog的同时,也能访问⽗窗⼝)findDialog=new FindDialog(this);connect() //把finddialog的信息传递给接受信息,处理信息的槽函数findDialog->show();findDialog->raise();findDialog->activateWindow();13:关于QTableWidget的使⽤QTableWidget * spreadsheet=new QTableWidget(this);setCentralWidget(spreadsheet);//这个⽅法是QMainWindow的⽅法#得到当前⿏标focus的单元格的⾏坐标和列坐标spreadSheet->currentRow()spreadSheet->currentColumn()#得到当前单元格的内容//如果当前单元格内没有内容,if内容为NULLif(spreadSheet->currentItem()){cout<<spreadSheet->currentItem()->text()<<endl;}#⿏标focus的单元格位置发⽣变化时,触发如下信号函数currentCellChanged(int,int ,int,int)14:主窗⼝widget常⽤的⽅法setWindowTitle();setWindowIcon(QIcon("xx.png"));#在QMainWindow中如何添加菜单栏和⼯具栏#创建需要 actionnewAction=new QAction("&new",this);newAction.setIcon(QIcon("xx.png"));connect(newAction,SIGNAL(),object,SLOT()); //让action⼲相应的活#添加⼀个菜单栏QMenu *fileMenu=menuBar()->addMenu("&File");fileMenu->addAction(neAction);fileMenu->addSeparator();#添加⼀个QToolBarQToolBar * fileToolBar= addToolBar("&file");fileToolBar->addAction(newAction);fileToolBar->addSeparator();//menufile->addSeparator()这个函数也是返回⼀个QAction *类型的数据#在statusBar()中添加widgetstatusBar()->addWidget(label);statusBar()->addWidget(label,1); //从左开始放label,1表⽰⽤空⽩扩展剩下的右边空间statusBar()->showMessage(const QString & str);15:QLabel的所有设置QLabel * label=new QLabel("w999");label->setAlignment(Qt::AlignHCenter);//⽂字对齐⽅式label->setMinimumSize(label-sizeHint());//⽂字宽度最少4个字符,当QLabel中没有字符时,也会保证最少有4个字符的空⽩位置显⽰16:QSettings的⽤法#创建settings对象QSettings settings("Yzs_think", "Application");公司或组织名称:Yzs_think,程序名称:Application#从settings中读出数据,设置应⽤程序的相关参数,可以设置默认值QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();QSize size = settings.value("size", QSize(400, 400)).toSize();resize(size);move(pos);#程序退出前,把需要保存的参数保存到settings中,书上说是保存到注册表中去了,还没有实践过QSettings settings("Yzs_think", "Application");settings.setValue("pos", pos());settings.setValue("size", size());17:窗⼝重要属性设置#保证容器⼀直在top layer(就是常⽤的fix 窗⼝在顶层)w.setWindowFlags(Qt::WindowStaysOnTopHint);18:各类event函数调⽤的条件//event函数被调⽤,分为下⾯⼏种情况:1:⽤户对mouse and keyboard的操作2:定时器时间到了3:⽹络超时4:窗⼝管理器1:上⾯是4类称为event sources,事件产⽣的源头2:event object:这个就是包含事件源有何种改变的事件对象(如QPressedEvent *e)3:event target,这处就是事件会通知给谁(⼀般就是事件处理函数)⼀句话说:event sources发⽣的事件变化,包装到event object中,传递给event target//窗⼝⼤⼩发⽣变化时,或是⿏标从⼀个widget到另⼀个widget时移动时,程序启动时会在构造函数调⽤调⽤之后,调⽤ paintEvent函数(参数类型不能写错)void paintEvent(QPaintEvent *)//点了右上⾓的x时,会调⽤该⽅法void closeEvent(QCloseEvent *)19:关于Qt中的主窗⼝qt中的主窗⼝是是没有⽗窗⼝的有⽗窗⼝的widget,称为⼦部件Qt::WindowFlags作为⽗窗⼝的第⼆个参数,可以定义⽗窗⼝很多重要属性:如下Qt::WidgetQt::DialogQt::SplashScreen#保证容器⼀直在top layer(就是常⽤的fix 窗⼝在顶层)w.setWindowFlags(Qt::WindowStaysOnTopHint);#函数对窗⼝进⾏最⼤,最⼩化,全屏操作setWindowState()#对于主窗⼝,我们⾮常关⼼窗⼝的⼤⼩和出现的位置,下⾯的函数是getter,主窗⼝包含两部分:1:框架部分(如title and border):使⽤x(),y(),pos(),move(),frameGeometry()函数访问2:内容部分,称为⽆框架的窗⼝:使⽤width(),height(),geometry(),setGeometry(),Rect(),Size()函数访问 ,resize()函数是调整内容部分的⼤⼩。
python qregularexpressionvalidator用法 -回复
![python qregularexpressionvalidator用法 -回复](https://img.taocdn.com/s3/m/def3f82e001ca300a6c30c22590102020640f259.png)
python qregularexpressionvalidator用法-回复QRegularExpressionValidator是Qt框架中一个用于验证正则表达式的类。
它允许开发者使用正则表达式来验证用户输入的文本是否符合特定的模式,从而确保输入的有效性。
本文将详细介绍QRegularExpressionValidator的用法,并提供了一些示例来帮助读者更好地理解。
1. 引入QRegularExpressionValidator类要使用QRegularExpressionValidator,首先需要在代码中引入此类。
在Python中,可以通过以下代码行实现:pythonfrom PyQt5.QtCore import QRegularExpressionValidator这样,我们就可以在代码中使用QRegularExpressionValidator了。
2. 创建QRegularExpressionValidator对象在实际使用中,我们需要创建一个QRegularExpressionValidator的实例。
下面是一个简单的示例:pythonvalidator = QRegularExpressionValidator()这将创建一个默认的QRegularExpressionValidator对象。
如果需要指定一个特定的正则表达式,可以在构造函数中传入表达式字符串,例如:pythonvalidator = QRegularExpressionValidator("[A-Za-z]+")在上述示例中,我们将正则表达式设置为只允许字母字符。
3. 将QRegularExpressionValidator应用到文本输入框一旦我们创建了一个QRegularExpressionValidator对象,我们需要将其应用到一个文本输入框上。
在Qt中,可以使用QLineEdit类来创建文本输入框。
qt contains 正则表达式
![qt contains 正则表达式](https://img.taocdn.com/s3/m/eb01a2836037ee06eff9aef8941ea76e58fa4a02.png)
qt contains 正则表达式在Qt中,正则表达式通常用于处理文本数据,例如验证用户输入、搜索文本或格式化字符串。
Qt的正则表达式支持是基于Perl兼容的正则表达式(PCRE)库。
要在Qt中使用正则表达式,你需要包含QRegExp类(在Qt 5及更早版本中)或QRegularExpression类(在Qt 6及更高版本中)。
这些类提供了用于匹配、搜索和替换文本中的模式的方法。
下面是一个简单的示例,演示如何在Qt中使用正则表达式来检查一个字符串是否包含特定的模式:cpp复制代码#include <QRegularExpression>#include <QString>#include <QDebug>int main() {QString text = "Hello, world! This is a test.";QRegularExpression regex("world"); // 创建正则表达式对象// 使用contains()方法检查文本是否包含匹配项if (regex.contains(text)) {qDebug() << "Text contains the pattern!";} else {qDebug() << "Text does not contain the pattern.";}return 0;}在上面的示例中,我们创建了一个QRegularExpression对象,并使用contains()方法来检查文本字符串是否包含与正则表达式模式匹配的子串。
如果找到匹配项,则输出"Text contains the pattern!",否则输出"Text does not contain the pattern."。
qml textfield regexpvalidator 正则表达式
![qml textfield regexpvalidator 正则表达式](https://img.taocdn.com/s3/m/9a5585ed250c844769eae009581b6bd97f19bc3e.png)
qml textfield regexpvalidator 正则表达式(原创实用版)目录1.介绍 QML TextField 和 Regexpvalidator2.QML TextField 的功能3.Regexpvalidator 的正则表达式规则4.如何在 QML TextField 中使用 Regexpvalidator 进行验证正文QML(Qt Quick)是一种用于创建跨平台移动和嵌入式应用程序的编程语言。
在 QML 中,TextField 是一个常用的控件,用于输入和显示文本。
为了确保 TextField 中的输入内容满足特定的规则,可以使用Regexpvalidator 进行验证。
QML TextField 是一个非常灵活的控件,可以满足各种输入需求。
它具有以下功能:- 输入框:可以输入文本内容- 软键盘:可以调出虚拟键盘进行输入- 校验:可以对输入内容进行校验为了在 TextField 中使用 Regexpvalidator 进行验证,需要先了解正则表达式规则。
正则表达式是一种文本搜索和匹配工具,它可以用来查找特定的文本模式。
在 QML 中,Regexpvalidator 的正则表达式规则如下:```"^w+(?:.w+)*$"```这个正则表达式规则表示:以字母、数字或下划线开头,后面可以跟字母、数字、下划线或点。
这样的规则可以确保输入内容是字母、数字或下划线组成,且可以包含点号。
了解了正则表达式规则后,就可以在 QML TextField 中使用Regexpvalidator 进行验证了。
以下是一个简单的示例:```TextField {id: textFieldtext: "请输入您的名字:"onInput: {if (textField.text.match(/^w+(?:.w+)*$/) === null) { textField.text = textField.text.substring(0, textField.text.length - 1);}}}```在这个示例中,当在 TextField 中输入内容时,会触发 onInput 事件。
qregexp用法
![qregexp用法](https://img.taocdn.com/s3/m/e4651c133d1ec5da50e2524de518964bcf84d2e5.png)
qregexp用法QRegExp是Qt库中的一个类,用于处理正则表达式。
在Qt应用程序中,QRegExp经常被用于字符串匹配、搜索和替换等操作。
本篇文章将介绍QRegExp的用法,包括其基本语法、模式匹配、替换操作等。
一、基本语法QRegExp对象可以通过构造函数进行初始化,接受一个字符串参数作为正则表达式模式。
QRegExp类的构造函数还可以接受其他参数,用于设置匹配选项和标志。
基本语法如下:```cppQRegExpregex(pattern,initState,singleLine,caseSensitivity );```其中,pattern是要匹配的正则表达式模式;initState是初始状态标志,通常设置为RegExp::NoFlag;singleLine表示是否在多行模式中进行匹配,通常设置为true;caseSensitivity表示是否区分大小写,通常设置为true。
二、模式匹配使用QRegExp进行模式匹配时,可以通过isEmpty()方法判断是否匹配成功,通过indexIn()方法获取匹配结果的位置。
另外,还有许多其他方法可以进行更复杂的匹配操作,如find()、contains()等。
下面是一些常用的方法:1.isEmpty():判断是否匹配成功。
2.indexIn(string):获取匹配结果的位置。
3.find(string):在主字符串中查找子字符串,并返回第一个匹配的位置。
4.contains(string):判断主字符串是否包含子字符串。
下面是一个简单的示例代码,演示如何使用QRegExp进行模式匹配:```cppQStringmainString="Hello,world!";QStringpattern="world";QRegExpregex(pattern);if(regex.isEmpty()){//匹配失败处理逻辑}else{intindex=regex.indexIn(mainString);if(index!=-1){//匹配成功,打印匹配结果位置qDebug()<<"Matchfoundatposition:"<<index;}else{//匹配失败,打印未找到匹配信息qDebug()<<"Nomatchfound.";}}```三、替换操作使用QRegExp进行替换操作时,可以通过replace()方法将匹配到的子字符串替换为指定的内容。
QRegExp的用法
![QRegExp的用法](https://img.taocdn.com/s3/m/52390f280622192e453610661ed9ad51f01d546c.png)
QRegExp的⽤法bool QRegExp::exactMatch(const &str) constReturns true if str is matched exactly by this regular expression; otherwise returns false. You can determine how much of the string was matched by calling ().For a given regexp string R, exactMatch("R") is the equivalent of ("^R$") since exactMatch() effectively encloses the regexp in the start of string and end of string anchors, except that it sets () differently.代码:QRegExp reg("^.+.mp3$");if (!reg.exactMatch(fi.fileName())){continue;}要判断fi的filename是不是“.map”格式的。
^的作⽤:^The caret signifies the beginning of the string. If you wish to match a literal ^ you must escape it by writing \\^. For example, ^#include will only match strings which begin with the characters '#include'. (When the caret is the first character of a character set it has a special meaning, see .)简单总结:起始符,如果要加⼊^,就⽤\\^$的作⽤:$The dollar signifies the end of the string. For example \d\s*$ will match strings which end with a digit optionally followed by whitespace. If you wish to match a literal $ you must escape it by writing \\$.简单总结:终⽌符,同上。
Qt正则表达式提取数据
![Qt正则表达式提取数据](https://img.taocdn.com/s3/m/b370ed26f011f18583d049649b6648d7c1c7088a.png)
Qt正则表达式提取数据这⼏天在上嵌⼊式课程设计,需要⽤到Qt,这个是信号与槽的,寒假的时候也简单学习了⼀些,但是没有怎么深⼊,⼜回过来看了看Qt,发现Qt 的ui界⾯配置与Android的好像,当然Qt也可以拿来开发Android。
废话不多说了,直接上代码:void testRegexCapture(){QString pattern(“(.*)=(.*)”);QRegExp rx(pattern);QString str(“a=100″);int pos = str.indexOf(rx); // 0, position of the first match.// Returns -1 if str is not found.// You can also use rx.indexIn(str);qDebug() << pos;if ( pos >= 0 ){qDebug() << rx.matchedLength(); // 5, length of the last matched string// or -1 if there was no matchqDebug() << rx.capturedTexts(); // QStringList(“a=100″, ”a”, ”100″),// 0: text matching pattern// 1: text captured by the 1st ()// 2: text captured by the 2nd ()qDebug() << rx.cap(0); // a=100, text matching patternqDebug() << rx.cap(1); // a, text captured by the nth ()qDebug() << rx.cap(2); // 100,qDebug() << rx.pos(0); // 0, position of the nth captured textqDebug() << rx.pos(1); // 0qDebug() << rx.pos(2); // 2}}QString s = ”a=100″;s.replace(QRegExp(“(.*)=”), ”b=”);qDebug() << s; // b=100QString s = ”a=100″;s.replace(QRegExp(“(.*)=(.*)”), ”\\1\\2=\\2″); // \1 is rx.cap(1), \2 is rx.cap(2)qDebug() << s; // a100=100void testRegexMatch(){QString pattern(“.*=.*”);QRegExp rx(pattern);bool match = rx.exactMatch(“a=3″);qDebug() << match; // Truematch = rx.exactMatch(“a/2″);qDebug() << match; // False}当初了解到Qt是在学习MFC的时候,当时写MFC程序才叫伤⼼啊。
QRegExp的解析
![QRegExp的解析](https://img.taocdn.com/s3/m/bd5c0b18763231126edb11a7.png)
引言正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。
比如表达式“ab+” 描述的特征是“一个'a' 和任意个'b' ”,那么'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。
(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。
(3)用来替换,比普通的替换更强大。
正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。
之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。
文章中的每一个举例,都可以点击进入到测试页面进行测试。
闲话少说,开始。
1. 正则表达式规则1.1 普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。
表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式"c",在匹配字符串"abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。
(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)举例2:表达式"bcd",在匹配字符串"abcde" 时,匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。
1.2 简单的转义字符一些不便书写的字符,采用在前面加"\" 的方法。
QT正则表达式限制输入值
![QT正则表达式限制输入值](https://img.taocdn.com/s3/m/5556a03ba31614791711cc7931b765ce05087ac0.png)
QT正则表达式限制输入值在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360]。
Qt提供了QIntValidator和QDoubleValidator可以限定数值输入范围,如使用QIntValidator限制整数的数值范围:例1:[cpp]view plaincopy1.lineEdit->setValidator(new QIntValidator(0, 1000, this));例2:[cpp]view plaincopy1.lineEdit->setValidator(new QDoubleValidator(-180.0,180.0,6,this));对于浮点数,使用QDoubleValidator时,发现只能限制只输入小数,但是无法设定数值范围,因此有必要对这个问题做一番研究。
除了QIntValidator和QDoubleValidator,Qt提供另一种校验器是正则表达式校验器:QRegExpValidator,下面是一些常用的利用正则表达式校验器限定数值范围的用法:限制浮点数输入范围为[-999999.9999,999999.9999][cpp]view plaincopy1.QRegExp rx("^(-?[0]|-?[1-9][0-9]{0,5})(?:\\.\\d{1,4})?$|(^\\t?$)");2.QRegExpValidator *pReg = new QRegExpValidator(rx, this);3.lineEdit->setValidator(pReg);限制浮点数输入范围为[-180,180][cpp]view plaincopy1.QRegExp rx("(^-?180$)|(^-?1[0-7]\\d$)|(^-?[1-9]\\d$)|(^-?[1-9]$)|^0$");2.QRegExpValidator *pReg = new QRegExpValidator(rx, this);3.lineEdit->setValidator(pReg);限制浮点数输入范围为[-180,180][cpp]view plaincopy1.QRegExp rx("^-?(180|1?[0-7]?\\d(\\.\\d+)?)$");2.QRegExpValidator *pReg = new QRegExpValidator(rx, this);3.lineEdit->setValidator(pReg);限制浮点数输入范围为[-180,180]并限定为小数位后4位[cpp]view plaincopy1.QRegExp rx("^-?(180|1?[0-7]?\\d(\\.\\d{1,4})?)$");2.QRegExpValidator *pReg = new QRegExpValidator(rx, this);3.lineEdit->setValidator(pReg);限制浮点数输入范围为[-90,90]并限定为小数位后4位[cpp]view plaincopy1.QRegExp rx("^-?(90|[1-8]?\\d(\\.\\d{1,4})?)$");2.QRegExpValidator *pReg = new QRegExpValidator(rx, this);3.lineEdit->setValidator(pReg);简单说明一下这几个正则表达式:^(-?[0]|-?[1-9][0-9]{0,5})(?:\.\d{1,4})?$|(^\t?$)(^-?180$)|(^-?1[0-7]\d$)|(^-?[1-9]\d$)|(^-?[1-9]$)|^0$^-?(180|1?[0-7]?\d(\.\d+)?)$^-?(180|1?[0-7]?\d(\.\d{1,4})?)$^-?(90|[1-8]?\d(\.\d{1,4})?)$1. 式子中开头的^和结尾的$限定字符串的开始和结尾;2. "-?" 表示一个或0个负号,这里面的问号表示其前面的字符重复0次或1次;3. 管道符“|”表示平行分组,比如后三个,表示180或其它形式;4. [1-9] 表示限定数字范围为1到9,其余类似,如果是有限几个值,还可以用枚举的方式,比如限定-255到255时,第一个数字2的限定,应该表达为[1,2],这表示这个位置只允许是1或者2;5. "\d"是一个转义字符,表示匹配一位数字;6. “\.” 表示匹配小数点;7. "\d+",这里面的+表示其前面的\d重复一次或多次;8. "\d{1,4}",里面的{1,4}表示重复1到4次;有了以上知识,下面我们可以很快的写出限定[-255,255]的正则表达式:[-255,255]整数:^-?(255|[1,2]?[0-4]?\d|[1,2]?5[0-4]?)$[-255,255]小数:^-?(255|([1,2]?[0-4]?\d|[1,2]?5[0-4]?)(\.\d)?)$。
qt中replace的用法
![qt中replace的用法](https://img.taocdn.com/s3/m/338d362f4531b90d6c85ec3a87c24028915f8587.png)
qt中replace的用法一、replace函数的介绍在Qt中,replace函数是QString类提供的一个非常实用的函数,用于替换字符串中的指定子串。
该函数可以帮助我们在字符串中查找指定的内容,并将其替换为新的内容。
replace函数有多种重载形式,可以满足不同的替换需求。
二、replace函数的基本用法replace函数的基本用法非常简单,它接受两个参数:要替换的源字符串和替换后的目标字符串。
下面是replace函数的基本形式:QString replace(const QString &before, const QString &after);其中,before表示要替换的子串,after表示替换后的新内容。
调用该函数后,它会返回一个新的字符串,原始字符串并不会改变。
三、replace函数的高级用法除了基本的用法外,replace函数还提供了一些高级功能,使得替换操作更加灵活和方便。
1. 替换所有匹配项replace函数默认只替换第一个匹配项,如果想要替换所有的匹配项,可以使用Qt 中的正则表达式来实现。
replace函数的重载形式如下:QString replace(const QRegExp &rx, const QString &after);其中,rx表示要匹配的正则表达式,after表示替换后的新内容。
这样,replace 函数就会将所有匹配到的子串都替换为新内容。
2. 替换大小写敏感replace函数默认是大小写敏感的,如果想要进行大小写不敏感的替换,可以使用Qt提供的CaseSensitivity枚举类型来设置。
replace函数的重载形式如下:QString replace(const QString &before, const QString &after, Qt::CaseSensitivi ty cs);其中,cs表示大小写敏感性,可以设置为Qt::CaseSensitive(默认值)或Qt::CaseInsensitive。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
QRegExp正则表达式2010-03-20 17:00"^\d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数"^((-\d+)|(0+))$" //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$" //负整数"^-?\d+$" //整数"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[ 1-9][0-9]*)))$" //负浮点数"^(-?\d+)(\.\d+)?$" //浮点数"^[A-Za-z]+$" //由26个英文字母组成的字符串"^[A-Z]+$" //由26个英文字母的大写组成的字符串"^[a-z]+$" //由26个英文字母的小写组成的字符串"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串"^\w+$" //由数字、26个英文字母或者下划线组成的字符串"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url"^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$" // 年-月-日"^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$" // 月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z ]{2,4}|[0-9]{1,3})(]?)$" //Email"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1 dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址^([0-9A-F]{2})(-[0-9A-F]{2}){5}$ //MAC地址的正则表达式^[-+]?\d+(\.\d+)?$ //值类型正则表达式QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一个或多个常量表达式.令一类为转义字符,它代表一个特殊字符.一.元字符. 匹配任意单个字符.例如, 1.3 可能是1. 后面跟任意字符,再跟3^ 匹配字符串首. 例如, ^12可能是123,但不能是312$ 配字符串尾. 例如, 12$可以是312, 当不能是 123[] 匹配括号内输入的任意字符.[123]可以为1, 2 或3* 匹配任意数量的前导字符. 例如, 1*2可以为任意数量个1(甚至没有), 后面跟一个2+ 匹配至少一个前导字符. 例如, 1+2必须为一个或多个1, 后跟一个2? 匹配一个前导字符或为空. 例如 1?2可以为2或这12二.统配模式通过 QRegExp::setPatternSyntax(QRegExp::Wildcard);可以将元字符设置为统配模式.在统配模式下,只有3个元字符可以使用.他们的功能没有变化.? 匹配任意单个字符, 例如, 1?2可以为1,后面跟任意单个字符, 再跟2* 匹配任意一个字符序列. 例如, 1*2, 可以为1, 后面跟任意数量的字符, 再跟一个2[] 匹配一个定义的字符集合. 例如, [a-zA-Z\.]可以匹配 a到z之间任意一个字符和. [^a]匹配出小写a以外的字符.三.转义序列\. 匹配"."\^ 匹配"^"\$ 匹配"$"\[ 匹配"["\] 匹配"]"\* 匹配"*"\+ 匹配"+"\? 匹配"?"\b 匹配响铃字符,使计算机发出嘟的一声.\t 制表符号\n 换行符号\r 回车符鉿\s 任意空格\xnn 匹配16进制为nn的字符\0nn 匹配8进制的nn字符这些表达式均以\开始, 与C++的转义字符相同,所以为了定义QRegExp中的一个转义序列,需要在前面添加两个\\1. 正则表达式规则1.1 普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。
表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
举例1:表达式"c",在匹配字符串"abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。
(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)举例2:表达式"bcd",在匹配字符串"abcde" 时,匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。
1.2 简单的转义字符一些不便书写的字符,采用在前面加"\" 的方法。
这些字符其实我们都已经熟知了。
表达式可匹配\r, \n 代表回车和换行符\t 制表符\\代表"\" 本身还有其他一些在后边章节中有特殊用处的标点符号,在前面加"\" 后,就代表该符号本身。
比如:^, $ 都有特殊意义,如果要想匹配字符串中"^" 和"$" 字符,则表达式就需要写成"\^" 和"\$"。
表达式可匹配\^ 匹配^ 符号本身\$ 匹配$ 符号本身\.匹配小数点(.)本身这些转义字符的匹配方法与"普通字符" 是类似的。
也是匹配与之相同的一个字符。
举例1:表达式"\$d",在匹配字符串"abc$de" 时,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。
1.3 能够与'多种字符' 匹配的表达式正则表达式中的一些表示方法,可以匹配'多种字符' 其中的任意一个字符。
比如,表达式"\d" 可以匹配任意一个数字。
虽然可以匹配其中任意字符,但是只能是一个,不是多个。
这就好比玩扑克牌时候,大小王可以代替任意一张牌,但是只能代替一张牌。
\d任意一个数字,0~9 中的任意一个\w 任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_ 中任意一个\s包括空格、制表符、换页符等空白字符的其中任意一个.小数点可以匹配除了换行符(\n)以外的任意一个字符举例1:表达式"\d\d",在匹配"abc123" 时,匹配的结果是:成功;匹配到的内容是:"12";匹配到的位置是:开始于3,结束于5。
举例2:表达式"a.\d",在匹配"aaa100" 时,匹配的结果是:成功;匹配到的内容是:"aa1";匹配到的位置是:开始于1,结束于4。
1.4 自定义能够匹配'多种字符' 的表达式使用方括号[ ] 包含一系列字符,能够匹配其中任意一个字符。
用[^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。
同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。
表达式可匹配[ab5@]匹配"a" 或"b" 或"5" 或"@"[^abc]匹配"a","b","c" 之外的任意一个字符[f-k]匹配"f"~"k" 之间的任意一个字母[^A-F0-3]匹配"A"~"F","0"~"3" 之外的任意一个字符举例1:表达式"[bcd][bcd]" 匹配"abc123" 时,匹配的结果是:成功;匹配到的内容是:"bc";匹配到的位置是:开始于1,结束于3。
举例2:表达式"[^abc]" 匹配"abc123" 时,匹配的结果是:成功;匹配到的内容是:"1";匹配到的位置是:开始于3,结束于4。
1.5 修饰匹配次数的特殊符号前面章节中讲到的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。
如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。
使用方法是:"次数修饰"放在"被修饰的表达式"后边。
比如:"[bcd][bcd]" 可以写成"[bcd]{2}"。
{n}表达式重复n次,比如:"\w{2}" 相当于"\w\w";"a{5}" 相当于"aaaaa"{m,n}表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配"ba"或"baa"或"baaa"{m,}表达式至少重复m次,比如:"\w\d{2,}"可以匹配"a12","_456","M12344"...?匹配表达式0次或者1次,相当于{0,1},比如:"a[cd]?"可以匹配"a","ac","ad"+表达式至少出现1次,相当于{1,},比如:"a+b"可以匹配"ab","aab","aaab"...*表达式不出现或出现任意次,相当于{0,},比如:"\^*b"可以匹配"b","^^^b"...举例1:表达式"\d+\.?\d*" 在匹配"It costs $12.5" 时,匹配的结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于10,结束于14。