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。

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...