正则表达式_1

简介: b站:奇乐编程 10分钟快速掌握正则表达式

正则表达式可以被视作是增强版的通配符,可以匹配制定规则的字符串。

练习方法

可以在编译器中自带的查找功能尝试,也可以在 regex101.com 在线测试工具中尝试。

限定符 Quantifiers

? 表示前面的字符需要出现0次或1次。

如:used? 可以匹配 use 和 used.

* 表示前面的字符需要出现0次或多次。

如:ab*c会匹配ac、abc、abbbc……但不能匹配到 adc。

+ 表示前面的字符需要出现1次或多次。

如上例,ab+c不会匹配 ac。

{数字} 表示前面的字符需要出现多少次。

如:ab{6}c表示 abbbbbbc,ab{2,6}c 表示b出现2~6次,ab{2,}c表示b出现2次以上。

() 用于限定多个字符。

如:(ab)?c表示c或abc。

或运算 or

a (cat|dog) 表示 a cat 或 a dog.括号不能少

字符类 Character Classes

[]+,用于匹配单词,单词的字符只能取自方括号内。

如:[abc]+表示只由 abc 组成的字符,aabbcc等。

[a-z]+表示所有小写字母

[a-zA-Z]+表示所有字母

[0-9]+表示所有数字

方括号内加^表示取反,如[^a-z]+表示所有非小写字母的字符(甚至包括换行符)

元字符 Meta-characters

\d:数字字符

\D:非数字字符

\w:单词字符(英文字符、数字字符、下划线)

\W:非单词字符

\s:空白字符(Tab、空格、换行符)

\S:非空白字符

\b:单词字符的边界,相当于文本的开头或结束。

.:任意字符(不包括换行符)

^:匹配行首,如^a只会匹配出现在行开头的a

$:匹配行尾,如a$只会匹配出现在行结尾的a

反斜杠用在符号前还可以做转义,如\.表示.字符。

贪婪与懒惰匹配 Greedy vs Lazy Match

<span><b>This is a simple text</b></span>

如果想匹配所有的标签,也就是匹配<>,中间的内容是一个或多个任意字符。

<.+>

但是这样匹配,会把整行都匹配起来,而不是每个标签单独匹配。这就是贪婪匹配,会尽可能多地匹配。因为.也会匹配>号。

<.+?>

例: IP 地址

IP 地址形如 192.168.0.1

由四部分数字和三个.组成,每部分数字都不能大于255.

首先表示出四部分数字+3个.的形式:

(\d+\.){3}(\d+)

然后再考虑处理数字大小的问题。

首先,如果百位是2,十位是5,个位只能取0-5

如果百位是2,十位是0-4,个位任意数字

如果百位是0或1,十位和个位可以是任意数字

((25[0-5]|2[0-4]\d|[01]\d\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d)

然后考虑百位和十位可能不存在的问题:用?处理这两位。

((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)

最后首尾加一个\b限定字符边界

\b((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)\b
目录
相关文章
|
3月前
|
XML 前端开发 数据安全/隐私保护
常用正则表达式
常用正则表达式
|
5月前
|
自然语言处理
正则表达式1
正则表达式
|
5月前
|
XML 数据格式
正则表达式3
正则表达式
|
编解码 vr&ar 数据安全/隐私保护
正则表达式
正则表达式
65 0
|
前端开发 JavaScript Java
正则表达式(极其适合零基础)
正则表达式(极其适合零基础)
156 0
正则表达式(极其适合零基础)
|
移动开发 JavaScript 前端开发
正则表达式总结
什么是正则表达式? 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。
100 1
|
移动开发 Unix Linux
|
机器学习/深度学习 C++ Windows
【正则表达式】总结
【正则表达式】总结
100 0
|
数据采集 Python
第63天:正则表达式
第63天:正则表达式
159 0