正则表达式_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
目录
相关文章
|
8月前
正则表达式2
正则表达式
|
Java 数据安全/隐私保护 Perl
常用的正则表达式大全
本文总结了常用的常用的正则表达式
142 0
常用的正则表达式大全
|
Java 数据安全/隐私保护
浅谈正则表达式的使用
在开发中,正则表达式的使用场景是多种多样的,同时也能够支持各种复杂场景,同时,正则表达式也是支持许多种语言,对于字符串的截取,匹配,替换 有着巨大的作用。
260 0
|
JavaScript 前端开发 索引
|
机器学习/深度学习
|
数据安全/隐私保护
正则表达式的应用
var RegExps = { number: /^-?((([1-9]\d*)|0)|([1-9]\d*\.\d+)|(0\.\d*[1-9]\d*))$/, // 数字,整型或浮点型 int: /^((-?[1-9]\d*)|0)$/, // 数字,整形 float: /^-?(([1-9]\d*\.
859 0
|
机器学习/深度学习 Windows JavaScript