Qt的正则表达式类(QRegExp)

正则表达式在qt中具有重要的作用,现依据qregexp的英文介绍进行简要介绍。正则表达式有四个主要作用:

1,有效性检查,检测字符串是否满足一定要求,比如包含一个数字或不包含空格。

2,查找,提供了比简单字符匹配更加强大的匹配模型,比如包含一个或者多字单词,或者不包含某些单词。

3,查找和替换,对字符串中的不同字符串进行替换。

4,字符串分割,正则表达式作为一个表示进行字符串分割。

qregexp基于perl的正则表示式语言,支持unicode编码,也支持通配符。通过setPartternSyntax改变qregexp使用的规则。qt5中,QRegularExpression类提供了一种正则表达式管理,兼容perl规则,建议替代QRegExp。

正则表达式包含了表达式、量词和断言。最简单表达式是一个字符,例如 x或 5,表达式也可以是一个位于方括弧内的字符串,[ABCD],将匹配A 或B或C或D,或[A-D]。匹配任意一个字符,写为[A-Z]。

量词指明发生的次数,x{1,1}表示x发生且只能发生一次,x{1,5}表示x至少发生一次,不超过5次。正则表达式不能用来检测括号或标签是否平衡。

[0-9]{1,1}匹配0-9之间的数字,[0-9]{1,2}匹配0-99之间的数字。这两个正则表达式可匹配字符串的任何位置。^[0-9]{1,2}$表示整个字符串只包含0-99之间的数字。

[0-9]可用\d代替,0-99的数字的匹配可写为^\d{1,2}$,也可写为^\d\d{0,1}$,或^\d\d?$。?表示{0,1}。

(mail|letter|correspondence)匹配包含了mail、letter、correspondence三个单词中的一个,可能是email,letters等;\b(mail|letter|correspondence)\b,匹配三个完整单词中的任何一个,只能是mail、letter等。

检测单词Eric或Eirik有两种正则表达式: \b(Eric|Eirik)\b 和\bEi?ri[ck]\b,\b避免出现类似Ericsson的单词。

字符和字符缩写:

这些介绍,比较抽象,建议结合例子来看。

猜你喜欢

转载自www.cnblogs.com/gethope5/p/12362925.html