正则入门1
来源:互联网 发布:西南财大网络教育 编辑:程序博客网 时间:2024/06/06 18:35
一、入门:正则字符
关于正则字符,很多文章都会讲到,足足有一篇文章才能描述清楚,我这里就不多说,对于我,平时,常用的有:
1. .
匹配不包括换行的任意字符
在php的s修饰符下面可以匹配换行,如$pattern='#<div>(.*?)</div>#s';
就可以匹配div内容有换行的数据。
2. \s
空格、tab、换行
[\s\S]表示匹配任意字符,\S是\s的反义。注意区分[\s\S]与.的区别。
3. *
匹配零个或更多个,即0~n
4. +
匹配一个或更多个,即至少一个,1~n
5. \
转义
一个特殊字符前加\
就表示转义,说明把它当普通字符用
6. []
单字符取一个,比如[abc]会匹配a或b或c
但是,如果[]
里面加上^
则会变成排除这个字符,如[^abc]
就表示不是a、不是b、也不是c
另外,在[]
里面可以使用-
表示一个范围,如[0-9]
表示从0到9,类似的还有[a-zA-Z]
,如果要包含-
字符,可以给它加上转义[\-]
。
关于[]
常见的错误用法是:[ab|bc]
用来表示ab
或bc
,实际上,它得到的结果是[abc|]
,即a或b或c或|
这4个字符(单字符)的任意一个。这里可以改成(ab|bc)
。
总结:[]里面的特殊符有五个:[]-\^
,其他字符都是普通字符,包括*.?
等。
说明:
* ^
在[^
的首位时候才有特殊意义
* [0-9
-
在不是首尾的时候有特殊意义
* \[ \]
因为占用[]
本身字符,所以有特殊意义
* \
本身是转义符,有特殊意义
7. ^
字符串开始
这里的^跟[]
里面用的^
是同一个字符,但是却不是一个意思,这里它表示整个字符串的开始,比如^www
表示以www
开头的字符串,注意区分,不在[]
里面的是开始符,在里面的排除
8. $
字符串结束
9. {1,3}
循环次数
[0-9]{1,3}
表示在0-9的范围里面循环1个、2个或者3个,可能结果有5、20、415等。
如果循环指定次数,如3次,则{3,3}
可以简写成{3}
。
如果刚好需要匹配字符{1}
,则正则需要给{
进行转义,得到\{1}
的正则。
如果{}
中间不是数字,则{}
本身不需要转义。
10. ?
有两个用法
(1) 匹配一个或零个
比如https?
匹配的https
(一个s)或者http(零个s)
(2)非贪婪模式
所谓非贪婪模式,就是匹配尽可能少的内容,比如,对于源字符串
<div>a</div><div>b</div>
使用<div>(.*?)</div>
会得到2个结果(注意:如果源字符串有换行,使用[\s\S]替换 . ):
<div>a</div>
和
<div>b</div>
因为,当遇到第一个</div>
,非贪婪模式就不会再往后找了。
而使用<div>(.*)</div>
(贪婪模式)则会得到整个字符串
<div>a</div><div>b</div>
,因为它会匹配所有字符直到后面再找不到</div>
。
更多关于?
的使用,可以参考《正则表达式匹配次数》
- 正则入门1
- 正则表达式[入门 1]
- 精通正则表达式:1 正则表达式入门
- Java正则表达式入门(1)
- Java正则表达式入门(1)
- Java正则表达式入门(1)
- Java正则表达式入门(1)
- Chapter 1 正则表达式入门
- 正则入门
- 入门正则
- 精通正则表达式--正则表达式入门(1)总结笔记
- 【正则】正则表达式入门(1)数字和通配符
- C#正则表达式(1):入门简介
- 正则表达式1——入门
- 深入入门正则表达式(java) - 1 - 入门基础
- 深入入门正则表达式(java) - 1 - 入门基础
- 正则:正则入门2.0:替换
- 正则表达式入门
- lombok的介绍和使用
- 单例模式
- MQTT服务器搭建-mosquitto1.4.4安装指南
- 8月1号起 银行卡、支付宝、微信的这些费用可以省了!
- 分针网——每日分享:WEB 集群与负载均衡(一)基本概念-下
- 正则入门1
- Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收
- Visual Studio 与Visual C++ 有什么区别
- 使用 buck 打包 Android( 使用OkBuck给Android Studio+gradle生成 buck 脚本)
- 1070. Mooncake (25)
- 关于EEPROM--CAT25256
- 阿里一面总结
- left join on左外连接
- Linux系统升级node与npm