文章目录
摘要
本文是用于对正则表达式的初学者,帮助大家简单学习什么是正则表达式,并结合简单的例子来简单介绍正则表达式的规则。
注意本文只简单的介绍如何看懂正则表达式,并没有涉及在具体语言下的应用。
正文
1什么是正则表达式
1.1正则表达式定义
正则表达式是一种由符号和规则组成的形式语言。(形式语言是一种用简洁的、抽象的、形式化的数学公式来表达复杂语言语法的特殊语言,它只研究语言的组成规律,不涉及语义。)
1.2正则表达式用途
正则表达式就是字符串的模式匹配,常用于:
校验:检查一个字符串中是否包含指定模式的子字符串
替换:将匹配的子字符串替换为给定的新字符串
捕获:提取符合匹配模式的字符串
批量提取/替换有规律的字符串
应用场景主要有:
在各种高级的文本编辑器中的使用
在各类办公软件(Office等)中使用
各种开发语言中的使用(C#/Java/JS/Perl/PHP等等)
用户输入的合法性验证(IP地址,特殊的订单号要求等)
模板引擎的标签库开发
网络爬虫(抓取机器人)的开发
批量的文本高效处理
1.3正则表达式的表现形式
正则表达式是一个表达式,一个 表达式由若干个 pattern 组成
pattern 由符号组成,且遵循特定的规则:
Patten = 代词 + 量词 + 定位介词*
本质上,一个模式单元(pattern unit)要做的事情就是来回答: 谁 + 多少 个+ 在哪里
2正则表达式
2.1正则表达式初级篇
2.1.1 代词
代词,用来指代一个特定字符!一定要明白,代词限定了“一个”字符的范围!
常用的代词如下:
\d: 数字
\D: 非数字
\w: == [0-9a-zA-Z_] 0-9 a-z A-Z
\W: == [^0-9a-zA-Z_] 非单词字符
\s: 空格 tab 换行 中文全角空格
\S: 非空格
. 任意字符 数字也算不匹配\n
[0-9a-zA-Z_] : 字符集
[^xyz] :
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]
注意事项:
- 除了常用的代词,我们还可以自己指定具体数字或者字母
比如^c即代表以c开头的字母 - (.*?)万能可以匹配所有
常用于^c(.?)c$这种形式,来校验c开题c结尾中间是任何数目的任何字母比如cdasdac - 多个代词用()包起来视为一个代词
如^(cc