一文搞懂正则表达式

一、为什么要正则表达式

  正则表达式是一种匹配文本模式的工具,它能够帮助我们在处理相关文本时更加高效地搜索、替换和验证等操作,有了它,从大量文本中寻找出我们需要的内容将会更加容易和高效。

二、正则表达式的基本规则

  1. 不同语言中的表示。 正则表达式在不同编程语言中有着不同的表示,例如在Python中:r"regular expression"flags;在EcmaScript中:/regular expression/flags;在Java中:"regular expression"flags
  2. 修饰符。 在正则表达式中,修饰符flags,它定义了一些匹配策略,常见的flags如下:
  • g:全局匹配。该策略会查找匹配到的所有项,如果非全局策略的话,只会查找第一个。
  • i:不区分大小写。该策略下,搜索时不区分大小写,比如A和a都可以匹配。
  • m:多行匹配。该策略仅在有^$有效,否则的话有无m修饰符都一样;在有^$修饰符时,若文本中有换行符,该策略会对每一行进行匹配查找,否则只会对第一行进行匹配查找,即使有g修饰符也只会对第一行进行匹配查找。
  • s:默认情况下,.字符会匹配除\n之外的任何字符,要是想让.也匹配上\n,则可以使用s修饰符。
  1. 表示数量的字符。 在正则表达式中,能够表示数量的字符有如下:
  • *:0个或多个,其是贪婪模式,也就是尽可能多的匹配字符,例如"zooo"r'zo*',其匹配到的是"zooo",而不是"zo""zoo"等。
  • +:1个或多个,其也是贪婪模式。
  • ?:0个或1个,其也是贪婪模式。
  • {m,n}:最少m个,最多n个,其也是贪婪模式。
  • {m,}:最少m个,做多不限,其也是贪婪模式。
  • {m}:正好m个。
    注意: 上面提到的表示数量的大多为贪婪模式,那非贪婪模式怎么设置,也就是尽可能少的匹配字符,在正则表达式中,我们用字符?进行设置,将?和放到上面那些字符的后面即可,例如例如"zooo"r'zo*?',其匹配到的是"zo",而不是"zoo""zooo"等。
  1. 字符簇 。在正则表达式中,除了数字、字母外常用的字符,我们正常书写即可外,还可以用一些字符簇来表示,这样会变得更加简洁方便:
  • .:匹配除换行符\n外的所有字符。
  • [a-z]:匹配所有的小写字母;[^a-z]:匹配小写字母外的所有字符。
  • [A-Z]:匹配所有的大写字母;[^A-Z]:匹配大写字母外的所有字符。
  • [a-zA-Z]:匹配所有的字母;[^a-zA-Z]:匹配字母外的所有字符。
  • [0-9]:匹配所有的数字。[^0-9]:匹配数字外的所有字符。
  • [abcd]:匹配a/b/c/d中的任一个。
    注意: 从上面可以看出,中括号[]括起来的部分就是字符簇,从类型上来讲,其能够匹配范围内的所有字符,但从数量上讲,其只匹配一个,什么意思呢,比如[0-9],其能匹配到0到9中的任何数字,但是其只能匹配0或1或2等等,是无法表示01或者93等等这种。
  1. 其他
  • 在正则表达式中,我们往往需要表示一个整体,即多个字符构成了一个整体,需要对这个整体进行匹配,这时我们可以用括号()将他们放到一起以表示一个整体。
  • 有时我们需要匹配以某个或某些字符开头或结尾,这时我们可以用字符^表示以什么开头,$表示以什么结尾。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QRegExp是Qt框架中的一个类,用于进行正则表达式的匹配和处理。它提供了多种模式来匹配不同的字符串。其中,QRegExp::RegExp模式提供了一个简单的模式匹配语法,类似于shell的通配符,可以使用字符“\”进行转义。QRegExp::Wildcard模式类似于通配符,但具有Unix shell的行为。QRegExp::FixedString模式是一个固定字符串,相当于在字符串上使用RegExp模式,其中所有元字符都使用escape()进行转义。QRegExp::W3CXmlSchema11模式是由W3C XML架构1.1规范定义的正则表达式。\[1\] 在使用编辑框输入内容时,可以使用QRegExp类的正则表达式来限制用户输入的内容,以避免输入无关信息和防止SQL注入。QRegExp类的正则表达式可以对编辑框的输入内容进行限制和匹配。\[2\] 如果想要匹配特定的单词,可以使用括号将单词组合在一起,例如(mail|letter)。为了强制匹配的开始和结束都在单词的边界上,可以将正则表达式包含在\b单词边界断言中,即\b(mail|letter)\b。这个\b断言在正则表达式中匹配一个位置,而不是一个字符,一个单词的边界是任何的非单词字符,如一个空格、新行,或者一个字符串的开始或结束。\[3\] #### 引用[.reference_title] - *1* [QRegExp(正则表达式)](https://blog.csdn.net/qq_45303986/article/details/127871375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【QT学习】QRegExp类正则表达式一文读懂)](https://blog.csdn.net/qq_59134387/article/details/127182436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt QRegExp 正则表达式](https://blog.csdn.net/m0_73443478/article/details/128483562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值