QRegExp一些注意事项(正则表达式和模式匹配)

  1. 某些字符代表的非本身意义(即有特殊意义):如:^、-、*等,要表示本身意义时,需要在前面加"\"。
  2. 某些字符代表其本身意义,但是加上"\"后有特殊意义,如:\n、\r、\t、\v、\a、\f等。
  3. qt本身为c++语言,在c++中"\"用来escape(转义),表示其本身是需要转义的,故在一个正则表达式中包含“\”需要在“\\”。(提示:因为c++有定义自己的转义序列,当和qt的相同时只用"\",比如第二条提到的那六个,但是为了方便,都用"\\")
  4. c++中以"\"开头,后面紧跟1个、2个或者3个数字表示的是八进制数,而在QRegExp中"\0"开头才是表示八进制数。QRegExp中"\i"表示反向引用,即与前面的第i个分组完全相同。如:\\b(\\w+)\\s+\\1\\b,其中\\1就是和\\w+的匹配东西完全相同, 故匹配的字符串可以是go go或者litter   litter等。
  5. 可以用()来分割成各个组,QRegExp的cap()函数默认是会捕捉各个小组,若是()不想被捕捉,即可用(?:表达式)格式。
  6.  "^"表达式表示以该表达式开头,如^#include就是以#include开头。但是当[^abc]表匹配除了a、b、c字符外所有的字符。(有点特殊)
  7. 小写为肯定,大写为否定。如:\d表示数字,\D则表示非数字。
  8. exactMatch("表达式")函数匹配相当于indexIn("^表达式$")。
  9. PatternSyntax(模式语法)格式QRegExp::Wildcard与QRegExp::RegExp有些区别。通配符只有c、?、*、[...]。"c"就是代表本身意义,两者相同。Wildcard的"?"和RegExp的"."相同。Wildcard的"*"和RegExp的".*"相同。Wildcard的"[...]"中基本没有特殊意义的字符,就是代表其本身意义,而RegExp的"[...]"字符及其集缩写和("^"、"-")可以代表其特殊意义。
  10. 断言只用作判断用而不会匹配任何字符,如:\\bOK\\b,匹配字符串i am OK 会得到OK。字符串中不需要有\b。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值