`

QT正则表达式的使用

    博客分类:
  • QT
 
阅读更多

http://www.cnblogs.com/frankbadpot/archive/2009/10/18/1583617.html

 

1. 用正则表达式验证文本有效性

你可以使用QRegExp::exactMatch来判断一个字符串是否符合一个pattern。 

 

void testRegexMatch()
{
    QString pattern(".*=.*");
    QRegExp rx(pattern);

    bool match = rx.exactMatch("a=3");
    qDebug() << match;                      // True

    match = rx.exactMatch("a/2");
    qDebug() << match;                      // False
}

 

2. 用正则表达式提取数据

你可以利用利用正则表达式从一个字符串里提取特定的字段或数据。例如,你可以用以下代码从"a=100"里提取"a"和"100"。

 

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 match
        qDebug() << 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 pattern
        qDebug() << rx.cap(1);              // a, text captured by the nth ()
        qDebug() << rx.cap(2);              // 100,

        qDebug() << rx.pos(0);              // 0, position of the nth captured text
        qDebug() << rx.pos(1);              // 0
        qDebug() << rx.pos(2);              // 2
    }
} 

 

3. 用正则表达式修改文本

你可以把字符串中匹配的字符串替换成"一般字符串"

 

QString s = "a=100";
s.replace(QRegExp("(.*)="), "b=");
qDebug() << s;                          // b=100
 或是把字符串中匹配的字符串替换"提取的字符串"

 

 

QString s = "a=100";
s.replace(QRegExp("(.*)=(.*)"), "\\1\\2=\\2");  // \1 is rx.cap(1), \2 is rx.cap(2)
qDebug() << s;  

 

 

http://www.thisisqt.com/forum/viewthread.php?tid=239

Regexp是由表达式,量词和声明组成的。最简单的表达式是一个字符,如x或是5。一个表达式也可以是一个用方括号包裹的字符集。[ABCD]将会匹配一个A或者一个B或者一个C或者一个D。我们也可以写成[A-D],这跟[ABCD]所要表达的是一样的意思。而[A-Z]则可以匹配任何一个大写字母。
一个量词指明表达式出现的次数。x{1,1} 匹配一个但仅仅一个x。x{1,5} 意味着匹配至少一个但不超过5个的x。

如果你看到其他地方的regexp,它们可能看起来跟上面有所不同,这是因为一个字符集和量词太常用了以至于它们也可以通过其他的字符来表达。如[0-9] 可以用\d来代替。而{1,1}来表示出现次数则可以用字符本身即可,如x{1,1}和x是一样的。

如果想匹配一个单词,如mail,我们可以写成m{1,1}a{1,1}i{1,1}l{1,1},但由于字符表达式数量默认为1,因此我们也可以就直接写成mail。现在我们来看看匹配多个单词的情况。如果我们想同时匹配mail或者letter或者correspondence又该怎么写呢?这里我们需要用到|符号,我们可以写成mail|letter|correspondence,这个表达式可以匹配这三个单词,但同时它也会匹配我们不想要的单词,如email。为了防止这种情况,我们需要说明单词的边界。

首先我们用圆括号将我们的表达式包裹起来,(mail|letter|correspondence)。圆括号可以将我们的表达式聚合起来。其次我们还需要使用\b单词边界声明

 

http://blog.csdn.net/daysummer/article/details/561038

c 匹配字符 'c' 

. 匹配任意字符 
^ 匹配一个输入的开始
$ 匹配一个输入的结束 
[] 匹配一个字符串集的定义 - see below. 
a* matches a sequence of zero or more a's (可以是a,ab,ade等;*可以代表任意个字符,包括0个)
a+ matches a sequence of one or more a's  (可以是ab,ade,aeee等,但不能是a;+只代表一个以上的字符)
a? matches an optional a     匹配可选的a  (可以是ab,ac,ad等,但不能是a,或ade;?只代表一个字符)

分享到:
评论

相关推荐

    qt正则表达式测试工具

    这个"qt正则表达式测试工具"显然是一个帮助开发者验证和调试正则表达式的实用程序。 正则表达式是一种特殊的文本字符串,用于描述复杂或重复的文本模式。它们在搜索、替换、数据提取等任务中非常有用。在Qt中,...

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在Qt中,我们可以使用`QRegularExpression`类来处理正则表达式。这个类提供了构造、匹配和替换等方法,使我们在C++代码中操作正则表达式变得简单。 接下来,我们探讨如何在lineEdit中应用正则表达式。Qt的lineEdit...

    Qt 正则表达式例程

    Qt正则表达式例程,包含字符串搜索、字符串替换等。配合博文http://blog.csdn.net/lankin2013/article/details/41989961 Qt的正则表示类是QRegExp,在很多情况下都可以用到,比如字符串验证、字符串搜索、搜索并替换...

    qt 正则表达式验证工具

    这使得Qt开发者可以轻松地在C++代码中使用正则表达式功能。`QRegExp`类提供了丰富的构造函数、方法和成员变量,如`pattern()`用于获取正则表达式模式,`exactMatch()`用于判断字符串是否与模式完全匹配,以及`index...

    QT正则表达式编辑助手程序.rar

    QT正则表达式编辑助手程序是一款基于QT框架开发的实用工具,专为处理和测试正则表达式设计。QT是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的库来支持各种功能,包括正则表达式操作。在这款程序中...

    QT正则表达式示范RegularExpressionDemo.rar

    https://txwtech.blog.csdn.net/article/details/126469018?spm=1001.2014.3001.5502 QT正则表达式示范RegularExpressionDemo.rar

    qt正则表达式的分析及界面设计.txt

    关于qt相关的界面设计,还有正则表达式的分析。通过正则表达式分析现有文本

    日期验证的正则表达式很好用

    在提供的C#代码中,方法 `ValidateDataTime` 接收一个字符串参数 `InputStr`,并使用正则表达式来验证该字符串是否符合“YYYY-MM-DD”的日期格式。 1. **输入验证**:首先检查输入字符串是否为空。 2. **正则匹配**...

    QT 实现输入隐藏密码,并实现正则表达式

    通过上述步骤,我们就成功地在QT应用程序中实现了输入隐藏密码的功能,并使用正则表达式进行实时验证。提供的Demo文件应该包含了实现这一功能的完整代码,你可以下载并运行,以加深理解和实践。 总结来说,QT的...

    QT编写的正则表达式验证软件

    QT编写的正则表达式验证软件是一款非常实用的工具,专为解决在编程过程中遇到的正则表达式验证问题而设计。在QT框架下,正则表达式(REGXP)是一个核心组件,它允许开发者对字符串进行模式匹配,用于数据验证、文本...

    MAC地址正则表达式

    本文将详细介绍如何使用正则表达式来识别和验证MAC地址。 #### 二、MAC地址格式 根据IEEE 802标准,MAC地址是由48位二进制数组成,通常以十六进制形式表示,每两个十六进制数字之间用冒号(:)或破折号(-)分隔。因此...

    RegExp.zip

    在IT领域,正则表达式(Regular Expression,简称regex或regexp)是一种强大的文本处理工具,广泛应用于字符...同时,参考链接中的博客文章也会提供更具体的实现细节和使用场景,帮助你更好地理解和运用QT正则表达式。

    正则表达式

    正则表达式。 按格式输出文字。

    QT文本输入正则表达式demo

    QT文本输入正则表达式Demo是一个实用的软件开发示例,它主要展示了如何在QT框架下...通过这个Demo,开发者不仅可以学习到如何在QT中使用正则表达式,还能了解到如何结合QT的事件驱动机制来提升应用的功能性和用户体验。

    正则表达式检验小程序

    qt,边学习边写的一个正则表达式检验小程序,有兴趣可以下载下来进行学习。qt,边学习边写的一个正则表达式检验小程序,有兴趣可以下载下来进行学习。qt,边学习边写的一个正则表达式检验小程序,有兴趣可以下载下来...

    正则表达式测试器,附文件读写功能,易用

    - **Python** 的正则表达式库`re`提供了丰富的功能,支持大多数常见的正则表达式操作,并且具有易于理解和使用的API。 - **Perl** 以其强大的正则表达式功能著称,它的正则表达式引擎支持更多的特殊字符和高级功能...

    Java正则表达式教程

    "`中提取数字,可以使用正则表达式`(\\D*)(\\d+)(.*)`,然后通过`group()`方法获取分组内容。 7. **其他高级特性**: - 预查(Positive Lookahead `(?=...)`)和预查否定(Negative Lookahead `(?!...)`):确保...

    正则表达式之 Unicode 匹配特殊字符

    在编程语言中,正则表达式被广泛使用来处理搜索、替换、验证等操作。Unicode是一种字符编码标准,能够为世界上几乎所有的字符提供唯一的数字编码。在JavaScript中,Unicode对于处理特殊字符具有重要作用,尤其是在...

    regex-url:正则表达式以匹配网址

    正则表达式网址 正则表达式以匹配网址。 安装 使用可以: $ npm install regex-url --save-dev 用法 var regexUrl = require ( 'regex-url' ) ; console . log ( 'Favourite website ...

    使用pyqt5 tablewidget 单元格设置正则表达式

    本文将详细讲解如何使用PyQt5的TableWidget组件来设置单元格的正则表达式验证,以便限制用户输入的数据格式。 首先,PyQt5的TableWidget是一个二维表格控件,允许你在其中添加、编辑和删除数据。每个单元格都可以...

Global site tag (gtag.js) - Google Analytics