官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
什么是正则表达式: 一套规则 - 匹配字符串的
谈到正则,就只和字符串相关了。我们要考虑的是在同一个位置上可以出现的字符的范围。
正则表达式能做什么:
•1.检测一个输入的字符串是否合法 -- web开发项目 表单验证 ◦用户输入一个内容的时候,我们要提前做检测
◦能够提高程序的效率并且减轻服务器的压力
•2.从一个大文件中找到所有符合规则的内容 -- 日志分析\爬虫 ◦能够高效的从一大段文字中快速找到符合规则的内容
字符组 : [字符组]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示。一个中括号只表示一个字符位置
字符分为很多类,比如数字、字母、标点等等。假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。
字符组 描述的是一个位置上能出现的所有可能性
# 接受范围,可以描述多个范围,连着写就可以了
# [abc] 一个中括号只表示一个字符位置,匹配a或者b或者c
# [0-9] 匹配数字0-9,根据ASCII进行范围的比对
# [a-z] 匹配所有的小写字母
# [A-Z] 匹配所有的大写字母
# [a-zA-Z] 匹配所有的大小写字母
# [0-9a-z]
# [0-9a-zA-Z_]
元字符:
字符:
元字符 匹配内容的规则
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配一个字符串的开始
$ 匹配一个字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
a表达式|b表达式 匹配a或者b表达式中的内容,如果匹配a成功了,不会继续和b匹配, 所以,如果两个规则有重叠部分,总是把长的放在前面
() 分组,匹配括号内的表达式,也表示一个组。约束某一个元字符的作用范围,只在()内生效
[] 字符组,匹配字符组中的字符
[^] 非字符组,匹配除了字符组中字符的所有字符
在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的 元字符
# [0-9] --> \d 表示匹配一位任意数字 digit
# [0-9a-zA-Z_] --> \w 表示匹配数字字母下划线 word
# 空格 -->
# tab --> \t
# enter回车 --> \n
# 空格,tab和回车 --> \s 表示所有空白 包括空格 tab和回车
# [\d] \d 表示匹配数字
# [\d\D] [\w\W] [\s\S] 表示匹配所有
# [^\d] 匹配所有的非数字
# [^1] 匹配除数字1以外的所有
# [1-9]\d 匹配两位整数
# [1357]\d 匹配1,3,5,7,开头的两位整数
例1:匹配多个网址:
www\.oldboy\.com|www\.baidu\.com|www\.jd\.com|www\.taobao\.com #\.表示取消.的特殊意义
www\.(oldboy|baidu|jd|taobao)\.com #用() 来约束 | 描述的内容的范围
记忆元字符 : 都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
# \d \w \s \t \n \D \W \S
# [] [^] .
# ^ $
# | ()
量词: