正则表达式小结(Regular Expressions)
(原创文章,谢绝转载~)
日常开发中,常用正则表达式方便的进行匹配、筛选工作。正则的常用内容有:
- 一般情况下原则:从左至右,越多越好(贪婪)
- 字符;转义:\ ,如 \*,\d (数字)等
- 选择,case1|case2|case3,
注意:对于大部分正则引擎,匹配规则是从左至右优先,因而,string|stringlong 会匹配到 stringlong 的 string 部分;
少数 Text-Directed Engine 的匹配规则则是最长优先,此时 string|stringlong 会匹配到 stringlong ;
- 起始位置:^ ,结束位置: $, 注意^和$并不匹配字符而是匹配位置,例如 d$ 可以匹配到 end 的 d,其中end的d字符的右边位置恰为结束位置。
- 重复数量:
- 精确重复数量,{n},例如: char{3} 匹配 charrr,r 重复3次
- 非精确重复数量,
- 0-1 次: ? ,例如 char? 匹配char(优先)或cha
- 1-无穷:+ , 例如 char+ 匹配char,charr,charrr,.......其中r至少重复1次
- 0-无穷:* , 例如 char* 匹配 cha,char,charr,.......其中r重复0次及以上
- lazy懒惰模式,在上面三种情况下后面再加?号, ??, +?, *? ,在这种情况下,匹配越少越好,
例如 char?? ,本来一个问号是 0-1,再lazy模式,则越少越好,0次,于是char?? 可匹配 cha 而不能匹配 char
再如 char+? ,本来一个加号是1-无穷,再lazy模式,则越少越好,1次,于是char+? 可匹配 char 而不能匹配 charr ,charrr等
- possessive占有模式,在上面三种情况下后面再加+号, ?+, ++, *+ ,在这种情况下,匹配越多越好,且不回溯
例如 char++, 越多越好 ,charrrrr,有多少r匹配到多少,
另一方面,不回溯,是什么含义呢,考虑以下问题: char++r, 它能否匹配 charrrrr ?答案是 不能。事实上:
cha r++ r
cha rrrr r 看过去好像可以让r++ 匹配4个r,最后一个r匹配r,这样正好匹配上,但因为独占模式是越多越好,所以第5个r 也会被 r++ 匹配到,也就是下图所示:
cha r++ r
cha rrrrr r++ 匹配到 rrrrr, 一旦匹配上则占有,不会再回溯(减少r的数量),因而 char++r 中的最后一个r ,没有东西和它匹配,所以匹配失败。
细思则有: char++r 无法匹配任何形式。。。
捕获组和索引值(Capturing Groups and Backreferences )
捕获组 用括号括住捕获部分,(regex),例如 (regex1)(regex2){3} ,regex1 和regex2 分别为两个捕获组,且分别具有索引值1和2,
注意:索引值序列123...的编码顺序为根据括号先从左至右,从外到内递归,
例如 (str1)(str(str3))(str4), str1索引值为1,(str(str3)) 整体索引值为2,str3 索引值为3,str4 索引值为 4。
正则表达式小结(Regular Expressions)的更多相关文章
- 正则表达式备忘录-Regular Expressions Cheatsheet中文版
正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...
- 正则表达式(Regular expressions)使用笔记
Regular expressions are a powerful language for matching text patterns. This page gives a basic intr ...
- [笔记] 精通正则表达式/Mastering Regular Expressions
/ 匹配<emphasis>这个tag标注的IP地址的RE:‘<emphasis>([0-9]+(\.[0-9]+){3})</emphasis>' / 锚定--a ...
- 自学Zabbix8.1 Regular expressions 正则表达式
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix8.1 Regular expressions 正则表达式 1. 配置 点击Adm ...
- Python之Regular Expressions(正则表达式)
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用 ...
- 转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions
Comparing E-mail Address Validating Regular Expressions Updated: 2/3/2012 Summary This page compares ...
- Regular Expressions --正则表达式官方教程
http://docs.oracle.com/javase/tutorial/essential/regex/index.html This lesson explains how to use th ...
- Regular Expressions in Grep Command with 10 Examples --reference
Regular expressions are used to search and manipulate the text, based on the patterns. Most of the L ...
- Introducing Regular Expressions 学习笔记
Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4 ...
- 【Python学习笔记】Coursera课程《Using Python to Access Web Data 》 密歇根大学 Charles Severance——Week2 Regular Expressions课堂笔记
Coursera课程<Using Python to Access Web Data > 密歇根大学 Charles Severance Week2 Regular Expressions ...
随机推荐
- 50几个photoshop快捷键
一.常用的热键组合 1.图层混合模式快捷键:正常(Shift + Option + N),正片叠底(Shift + Option + M),滤色(Shift + Option + S),叠加(Shif ...
- WKWebView 官方文档
WKWebView 类 一个WKWebView对象可以显示交互式的web内容.就像一个应用程序的浏览器.你可以使用WKWebView类嵌入Web内容的应用程序.这样做,创造一个WKWebView对象, ...
- 破解 Adobe 系列的最佳方法,手把手教
此方法是个人认为最方便的而且最安全的方法(可以避免下载到可能捆绑病毒的破解版本) 1.首先到Adobe的官网上下载 Creative Cloud: 打开官网上creative cloud 的下载页面: ...
- mac os 安装 wget
1. brew安装: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/inst ...
- HTML5浏览器定位navigator.geolocation.getCurrentPosition
<!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> ...
- 集成python双版本详解
最近要准备学习Python,由于版本上的差异,不知道要学哪个,现在好多东西都是基于python2基础的,但是python2在2020年左右就可能停止了,所以干脆决定两个都装上吧! 首先上官网上下载 ...
- Spring+TaskExecutor实例
1 taskExcutor package com.test; import org.springframework.core.task.TaskExecutor; public class Main ...
- 初学MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品. Mysql默认端口号: 3306 超级用户:root prompt 修改提示符. ( ...
- Kafka 源代码分析之Message
这里主要分析一下message的格式. 一条message的构成由以下部分组成 val CrcOffset = 0 //crc校验部分和字长 val CrcLength = 4 val MagicOf ...
- ListView 介绍
1. 通过继承Activity实现ListView 1.1 在XML布局文件中实现一个ListView <ListView android:layout_width="wrap_con ...