4. 正则表达式(4)
1. 定位符与原义字符:
(1) 文本验证定位符:
定位符用于规定匹配模式在目标字符串中出现的位置。例如,规定匹配模式只能出现在开头或者结尾处,这样对于文本格式的验证非常有用。
用” ^ ” 匹配目标字符串的开始位置:
匹配必须发生在目标字符串的开头处,"^" 必须出现在表达式的最前面才具有定位符作用。
例如,"^o"与"ok"中的"o"匹配,但与"no"中的"o"不匹配。如果设置了RegExp对象实例的multiline属性,"^"还会与行首匹配,即与"\n","\r"之后的位置匹配。
用” $ ” 匹配目标字符串的结尾位置:
匹配必须发生在目标字符串的结尾处," $ "必须出现在表达式的最后面才具有定位符的作用。
例如,"o$"与"no"中的"o"匹配,但与"ok"中的"o"不匹配。如果设置了RegExp对象实例的multiline属性,"$"还会与行末匹配,即与"\n","r"之前的位置匹配。
用 ” \b “匹配一个字边界:
"\b"包含了字与空格间的位置,以及目标字符串的开始和结束位置等。
例如,"er\b"匹配"order to"中的"er",但不匹配"verb"中的"er"。
用 ” \B ” 匹配非字边界:
例如,"er\B"匹配"verb"中的"er",但不匹配"order"中的"er"。
2. 贪婪匹配与懒惰匹配
默认情况下,正则表达式使用最长匹配原则,即贪婪匹配原则。
例如,要将”book”中匹配”bo?”中的部分替换成”l”,替换后的结果是”lok”,而不是”look”;如果要将”book”中匹配”bo*”中的部分替换成”l”,替换后的结果是”lk”,而不是”lok”,或者”look”。
当解释器将代码中的字符解析成一个个的编译器,并在处理代码当前最小语法单元时,编译器会使用一种贪婪匹配算法,也就是说会尽可能让一个单元包含更多的字符。如果当字符”?”紧跟任何其他限定符(“*”,”+”,”?”,”{n}”,”{n,}”,”{n,m}”)之后时,匹配模式变成使用最短匹配原则,即非贪婪匹配原则。例如,在字符串”booook”中,”bo+?”只匹配”bo”部分,而”bo+”匹配”boooo”部分。
3. 选择匹配符
选择匹配符” | “,用于选择匹配两个选项之中的任意一个,其两个选项是” | ” 字符两边尽可能最大的表达式。
例如,”abcd|efghl”,匹配的是”abcd”或”efgh”,而不是”abcdl”或”efghl”;如果要匹配”abcdl”或”efghl”,应该使用括号创建子表达式,即”(abcd|efgh)l”。
4.特殊字符与字符匹配符
正则表达式中使用多种方式来表示非打印字符和原义字符,这些方式都以字符”\”后跟其他转义字符序列来表示,其中的一些方式也可以表示普通字符。字符匹配符用于匹配多个字符中的任意一个。
(1) 特殊字符
(2)字符匹配符
” […] ” 匹配方括号中包含的字符集中的任意一个字符。
5. 分组组合和反向引用符
分组组合是将表达式中某部分内容组合起来的符号,反向引用符则是用于匹配分组组合捕获到的内容的标示符。
(1) 分组组合
“(parttern)”将pattern部分组合成一个可统一操作的组合项和子匹配,每个捕获的子匹配项
4. 正则表达式(4)相关推荐
- 通过正则表达式校验手机号码,拿走即用!
校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...
- Linux shell 学习笔记(15)— shell 正则表达式
1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...
- re2正则表达式匹配引擎的c接口版本cre2的中文使用手册
前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...
- 正则表达式(括号)、[中括号]、{大括号}的区别小结
正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- 正则语法完全正则表达式手册_语法格式重点
20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...
- 正则表达式 - 语法
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 例如: r ...
- 正则表达式中的\.表示什么意思
\ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.
- ?:在正则表达式中什么意思
"?:"非获取匹配,匹配冒号后的内容但不获取匹配结果,不进行存储供以后使用. 单独的"?":匹配前面的子表达式零次或一次. 当"?"紧跟在任 ...
- 关于正则表达式 \1 \2之类的问题
我们创建一个正则表达式 var RegExp = /^(123)(456)\2\1$/; 这个正则表达式匹配到的字符串就是 123456456123 创建另外第二正则表达式 var RegExp1 = ...
最新文章
- Centos6.5 yum 安装MySQL5.5 并修改数据库路径
- 4.0 《数据库系统概论》数据库安全性详解---(存取控制、DACMAC、视图机制、审计Audit....)
- 3.Prometheus + Grafana实现可视化、告警
- Java Jackson源码研究 - how is class member attribute information is parsed by Serializer
- LeetCode 783二叉搜索树节点最小距离-简单
- PLSQL登录报错ORA-12154
- alm系统的使用流程_支持MBSE的企业信息管理系统发展与启示
- 两个构件的重合点_GTJ2018软件中如何合并两个工程?
- 面试官系统精讲Java源码及大厂真题 - 26 惊叹面试官:由浅入深手写队列
- jQuery-处理元素内容、表单元素
- python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!
- 如何借助大数据进行社交媒体营销
- linux获取主板温度电压_主板供电
- python车牌识别_Python-车牌识别
- 我的时间管理——任务表
- CSS3参考手册(所有属性)
- dm9000数据速率_STM32网络通信之DM9000A电路设计
- 六 Python 字典与集合
- 爆款养成思路,教你利用砍价做出刷屏活动!
- 三种方法查看电脑IP地址是否被占用
热门文章
- Spring Framework 4.0相关计划公布---包括对于Java SE 8 和Groovy2的支持
- GGally与pairs相关关系图_史上最全(二)
- 独家分享--48页PPT解密数据可视化!
- apollo-配置管理中心-安装
- 数据之路 - 数据可视化 - PowerBI工具
- elasticsearch pinyin 拼音分词器
- openstack: No valid host was found. There are not enough hosts available
- [学习笔记] [数据分析] 01.Python入门
- codeforces 735D Taxes(数论)
- 描绘质量属性的六个常见属性场景。