本帖最后由 空蝉如此世 于 2019-6-18 21:39 编辑
前言
在项目中做一些数据匹配,规则限定,爬虫分析数据的时候,我们会用到正则表达式。下面整理了一下正则的基础知识,全都是早年的学习笔记。
正文
#正则表达式基础
. 表示除\n之外的任意的单个字符
[] 字符的筛选
[^] 相当于 非
| 表示或的意思
() 改变运算的优先级。
* 限定符,表示前面的表达式出现0次或多次。
+ 限定符,表示前边的表达式必须出现1次或者多次。至少得出现1次。
? 限定符,表示前边的表达式必须出现0次或者1次。
{n} 限定符,限定前边的表达式必须出现n次。
{n,} 限定符,限定前边的表达式至少出现n次。
{n,m} 限定符,限定前边的表达式至少出现n次,最多出现m次。
^ $ 表示的是字符串的开头和结尾
\d 等价于[0-9]
\D 等价于[^0-9]
\s 表示所有那些空白符 不可见字符
\S 就是除了\s以外的所有字符。
\w 表示[0-9a-zA-Z_]
\W 就是除了\w之外的所有其他字符。
\b 表示单词的边界。 (断言,只判断,不匹配。)
=================================================
. 表示除\n之外的任意的单个字符
a.b
a,b
=========================================
[] 字符的筛选
a[0-9]b
a[a-z]b
a[0-9a-zA-Z]b
a1b
axb
aAb
a[^0-9]b 表示a与b之间只能出现除了0123456789之外的任意单个字符。
a[^0-9a-z]b
=====================================================
| 表示或的意思
z|food 由于| 的优先级非常低,所以这个表达式可以匹配 z 或 food 这个表达式不匹配zood
(z|f)ood 才表示zood或者food
===========================================
()改变运算的优先级。
提取组。
=======================================
* 限定符,表示前面的表达式出现0次或多次。
zoo* 表示zo zoo zoooooooo
(zoo)* 表示zoozoo.......
a.*b 表示ab aaddddb afjdsklf%$#@dsklfjdsklfjdsklfjb
================================================
+ 限定符,表示前边的表达式必须出现1次或者多次。至少得出现1次。
a.+b
a9dfjsakl3824urnj324239feb
==================================================
? 限定符,表示前边的表达式必须出现0次或者1次。
a.?b
ab
axb
? 的另外一个作用就是“终止贪婪模式”。正则表达式默认是贪婪模式。
======================================================================
a[0-9]+b
a0b
a00b
a09b
a99999999999999999999b
==========================其他限定符=====================
{n} 限定符,限定前边的表达式必须出现n次。
a[0-9]{10}b
a1234567899b
======================
{n,} 限定符,限定前边的表达式至少出现n次。
1[a-z]{3,}2
1axffdsafdsafdasfdsafdsafdsafdsfdsafsdfdsfdsfdsa2
========================================
{n,m} 限定符,限定前边的表达式至少出现n次,最多出现m次。
a[0-9]{3,7}b
a0000000b
===========================================
^表示的是字符串的开头
$表示字符串的结尾。
^ 和 $ 就表示的是字符串的两个特征。一个表示开头的特征,一个表示结尾的特征
^abc.*xyz$ ^abc122345xyz$
^abcdefg$ ^abcdefg
fdsfdsfxyz xyz$
===========================================
a[0-9]b
a\db
\d等价于[0-9]
digital
\D [^0-9]
\s 表示所有那些空白符,不可见字符
a\s*b
ab
a
b
\S 就是除了\s以外的所有字符。
=================================================
\w [0-9a-zA-Z_]
word表示单词字符。
\W 就是除了\w之外的所有其他字符。
\b表示单词的边界。 (断言,只判断,不匹配。)
============================================
.
下面这几种方式就可以表示任意的单个字符出现在ab之间。
a[\s\S]b
a[\d\D]b
a[\w\W]b
#实战
1:新建控制台应用程序
2:贴入以下代码,可以一个模块一个模块的测试
尾声
正则表达式在线测试 http://tool.oschina.net/regex/
|