标题: 正则表达式语法学习和在线练习作者: 梦幻之心星    sky-seeker@qq.com标签: [#正则表达式,#语法,#学习,#练习]目录: [语法]日期: 2021-01-26

背景说明

  • 正则表达式使搜索和替换操作更加灵活高效。
  • 许多程序设计语言都支持使用正则表达式进行字符串操作。
  • 正则表达式是由普通字符和特殊字符组成的文字模式。
  • 正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
  • 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

语法说明

普通字符

  • 普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

    字符 描述
    [ABC] 匹配字符集合中的任意一个字符
    [^ABC] 匹配字符集合中未包含的任意字符
    [A-Z] 匹配指定范围内的任意字符
    [^A-Z] 匹配任何不在指定范围内的任意字符

非打印字符

  • 非打印字符也可以是正则表达式的组成部分。

    字符 描述
    \cx 匹配由x指明的控制字符。x的值必须为 A-Za-z 之一
    \f 匹配一个换页符。等价于 \x0c\cL
    \n 匹配一个换行符。等价于 \x0a\cJ
    \r 匹配一个回车符。等价于 \x0d\cM
    \t 匹配一个制表符。等价于 \x09\cI
    \v 匹配一个垂直制表符。等价于 \x0b\cK
    \s 匹配任何空白字符,包括空格、制表符、换页符等
    \S 匹配任何非空白字符
    \w 匹配字母、数字、下划线、汉字
    \W 匹配非字母、数字、下划线、汉字
    \d 匹配一个数字字符。等价于 [0-9]
    \D 匹配一个非数字字符。等价于 [0-9]

特殊字符

  • 匹配特殊字符时必须进行转义,即放置反斜杠字\在特殊字符前面。

    特别字符 描述
    \ 将下一个字符标记为一个特殊字符
    . 匹配除换行符(\n\r)之外的任何单个字符
    | 匹配二者之一

限定符

  • 限定符用来指定正则表达式的一个给定组件的出现次数。

    字符 描述
    * 匹配前面的子表达式零次或多次。等价于 {0,}
    + 匹配前面的子表达式一次或多次。等价于 {1,}
    ? 匹配前面的子表达式零次或一次。等价于 {0,1}
    {n} n 是一个非负整数。匹配确定的 n 次
    {n,} n 是一个非负整数。至少匹配 n 次
    {n,m} mn 均为非负整数,其中 n <= m 。最少匹配 n 次且最多匹配 m 次

捕获元

  • 捕获分组的捕获匹配结果可以通过$n(表示第 n 个捕获组的内容)查看。

    字符 描述
    (exp) 匹配 exp 并捕获这一匹配
    (?:exp) 匹配 exp 但不捕获匹配结果。也就是说这是一个非捕获匹配
    exp1(?=exp2) 正向肯定预查。用于查找 exp2 前面的 exp1
    exp1(?!exp2) 正向否定预查。用于查找后面不是 exp2exp1
    (?<=exp2)exp1 反向肯定预查,与正向肯定预查类似,只是方向相反。用于查找 exp2 后面的 exp1
    (? 反向否定预查,与正向否定预查类似,只是方向相反。用于查找前面不是 exp2exp1

定位符

  • 定位符将正则表达式固定到行首或行尾,不能与限定符一起使用。

    字符 描述
    ^ 匹配输入字符串开始的位置
    $ 匹配输入字符串结尾的位置
    \b 匹配一个单词边界,即单词和空格间的位置
    \B 匹配非单词边界

修饰符

  • 用于指定额外的匹配策略。位于表达式之外

    修饰符 含义 描述
    i ignore 将匹配设置为不区分大小写
    g global 全局匹配,查找所有的匹配项。
    m multiline 多行匹配,使边界字符 ^$ 匹配每一行的开头和结尾
    s 特殊字符圆点 . 中包含换行符 \n 默认情况下的圆点 . 是匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n

运算符优先级

  • 相同优先级的从左到右进行运算,不同优先级的运算先高后低。

    运算符 描述
    \ 转义符
    (), (?:), (?=), [] 圆括号和方括号
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, \任何元字符、任何字符 定位点和序列
    | "或"操作字符具有高于替换运算符的优先级

在线练习

  • RegexOne-学习正则表达式
  • RegExr:学习,构建和测试RegEx
  • 在线正则表达式测试器和调试器

注意事项

  • 限定符 *+ 都是贪婪匹配,会匹配尽可能多的字符。
  • 在限定符的后面加上一个 ? 可以实现懒惰匹配,匹配尽可能少的字符。

参考资料

  • 正则表达式 – 教程 | 菜鸟教程
  • 正则表达式30分钟入门教程

版权声明:本文为「梦幻之心星」原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。


博客园地址:https://www.cnblogs.com/Sky-seeker微信公众号:关注微信公众号,获取即时推送


正则不能输入特殊字符_正则表达式语法学习和在线练习相关推荐

  1. java正则不能输入汉字_求一个正则表达式只输入字母或数字或汉字,要过滤特殊字符...

    正则表达式:只能有数字或中文或字母组成 chenzhe_n16292018-09-06 一个正则表达式测试(只可输入中文.字母和数字) u0129242379192015-10-05 js正则表达式限 ...

  2. 不允许输入特殊字符的正则表达式_JavaScript正则表达式常用技巧

    正则表达式是用于匹配字符串中字符组合的模式.在 JavaScript 中,正则表达式也是对象.这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match.ma ...

  3. js正则匹配闭合标签_正则表达式匹配封闭html标签

    统计代码行数 , 只需一个正则就 搞定.嵌套 Html 标签的匹配是正则表达式应用中一个比较难的话题,因为它涉 及到的正则语法比较多,也比较难.因此也就更有研究的价值. 思路 任何复杂的正则表达式都是 ...

  4. java正则匹配下划线_正则表达式(匹配英文、中文、数字、下划线)

    如下的正则: 复制代码 代码示例: ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾: ^(?!_)(?!. ...

  5. python正则匹配数字连续_正则表达式实现匹配连续数字的方法

    实现的要求如下: 纯数字 5-7位之间 前三位相同 从第四位开始连续 如下面的例子: 11123 #正确 22234 #正确 33345 #正确 333456 #正确 2223456 #正确 0001 ...

  6. java 正则 最后一个字符_正则表达式怎么匹配字符串中最后一串数字?

    展开全部 importre temp='DwellTime:666' m=re.search(r'\d*',temp) printrepr(m.group()),m.start(),m.end() m ...

  7. mysql正则匹配大写字母_正则表达式,大写字母,怎么匹配?

    展开全部 正则表达式匹配大写字母的表达为/^[A-Z]+$/ 其他情况下的匹配表达式: 一.测试字符串 var str = 'Adobe InDesign.Microsoft Word 等对中文626 ...

  8. java 正则 不可见字符_正则表达式匹配不可见字符

    在文本中,文字符号分为3种,如表: 普通文字符号     A到Z ,a到z,数字0到9,以及不是元字符的其他符号(比如:#.=) 元字符               12个被保留做特殊用途的符号:[] ...

  9. Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法

    原文地址: https://blog.csdn.net/graceland525/article/details/48676071//使用正则表达式限制只能输入数字 QRegExp rx(" ...

最新文章

  1. 二、MySql优化七个查询命令特征
  2. mysql 1280_技术分享 | MySQL 一次奇怪的故障分析
  3. Eclipse公共许可证
  4. TQ210——S5PV210 uboot顶层mkconfig分析
  5. Altium Designer20原理图库放置引脚报错解决方案
  6. 修改Yarn的全局安装和缓存位置
  7. 实现APP-V服务全程跟踪(二)
  8. Atitit dsl实现(1)------异常的库模式实现  异常的ast结构
  9. 整合阿里云视频播放器——Coding在线(十四)
  10. 微信小程序——聊天小程序(从搭建到结束)
  11. 说说怎么保证线程安全
  12. C语言与或非应用案例,与或非(生活中与或非例子)
  13. 如何将 EXCEL 数据写入数据库
  14. SQLite 免费查看工具
  15. 写给理工科人看的乐理(三)五线谱进阶与和声理论
  16. lt路由器的虚拟服务器如何使用,路由器设置局域网内服务器
  17. 2017电子设计大赛-光电科技协会板球控制系统
  18. 外部PLC触发VisionMaster多流程运行
  19. 用matlab画声波,基于MATLAB的声波分析研究-复旦大学物理教学试验中心.PDF
  20. PCB工艺规范及PCB设计安规原则

热门文章

  1. python线程池模块_python并发编程之进程池,线程池,协程(Python标准模块--concurrent.futures(并发未来))...
  2. mysql 8.0.11-Windows (x86, 64-bit)下载地址与安装教程
  3. php raabitmq中间件_rabbitMQ消息中间件环境配置及原理了解
  4. spring-test dao空指针异常_014、Java异常机制
  5. 美团无人配送CVPR2020论文CenterMask解读
  6. 论文浅尝 | 利用开放域触发器知识改进事件检测
  7. 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
  8. 论文浅尝 | AAAI2020 - 基于生成对抗的知识图谱零样本关系学习
  9. 综述 | 知识图谱实体链接:一份“由浅入深”的综述
  10. Flume原理及使用案例