前言
正则表达式,regular expression(RE),就是为了用简洁的方式来表达字符串。
试想一下,如果想要表现一个字符,包含一个A和五万个B,一个一个列举,得到猴年马月啊。
再者,如果要列举AB开头,后续字符串不包含ABCDEF,且不长于20长度的字符串,一个一个枚举,要多久呀!
这时候,正则表达式,这个大救星出场了。
而正则表达式,主要应用在字符串匹配过程。
使用RE
语法
-
正则表达式由字符和操作符构成
需要强调的是,正则表达式的字符范围包括大小写字母,罗马数字,以及部分符号。
. 表示任何单个字符
[] 对单个字符给出取值范围;[abc]表示a或b或c,[a-f]表a-f中的任意一个字符串。
[^ ],与[]相反,指取值范围以外字符;[^abc]表示非a非b非c。
*,前一个字符0或无限延伸;abc*表示,ab,abc,abcc...
+,前一个字符1或无限延伸;abc+表示,abc,abcc,abccc...
?,前一个字符0或1次延伸;abc?表示,ab,abc。
|,左右表达式任意一个;ab|cd表示,ab或cd。
{m},扩展前一个字符串m次;ab{2}c,表示abbc。
{m,n},扩展前一个字符串m 到n次;ab{1,2}c,表示abc,abbc。
^,表示字符串开头部分;^abc,匹配abc 开头的字符串。
$,匹配字符串结尾;abc$,匹配abc 结尾的字符串。
(),分组标记,内部只可以用|;(abc)表示abc,(abc|def)表示abc, def。
\d 数字,等价于[0-9]
\w 单词字符,等价于[A-Z], [a-z], [0-9] 及 -。
小练习
第一题:
? 表() 部分出现0或1次,因此对应字符串为
PN, PYN, PYTHN,PYTHON
第二题:
PYTHON+
可表示
PYTHON
PYTHONN
PYTHONNN
...
...
第三题:
PY{:3}N
可表示
PN
PYN
PYYN
PYYYN
经典正则表达式
1)^[A-Za-z]+$
,匹配开头结尾之间的,也就是任意数目的二十六个大小写字母组成的字符串。
可以再加上数字,^[A-Za-z0-9]+$
2)整数的字符串如何表示呢?^-?\d+$
网友评论