正则表达式_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
目录
相关文章
|
2月前
|
数据安全/隐私保护
正则表达式小结
正则表达式小结
41 0
|
8月前
正则表达式:理解与运用
正则表达式:理解与运用
44 0
|
11月前
|
C++
C++正则表达式
C++正则表达式
|
新能源 Java Linux
你必须掌握的常用正则表达式大全
你必须掌握的常用正则表达式大全
1176 1
你必须掌握的常用正则表达式大全
|
XML 数据安全/隐私保护 数据格式
常用正则表达式
常用正则表达式
|
移动开发 Unix Linux
|
XML PHP 数据安全/隐私保护
常用的正则表达式
正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。 正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。
151 0
【正则表达式】总结
【正则表达式】总结
88 0
|
机器学习/深度学习 Windows JavaScript