加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

RegEx Basic

发布时间:2020-12-14 02:09:06 所属栏目:百科 来源:网络整理
导读:整理简化自 《正则表达式必知必会》前六章, Ben Forta 著。 1. RegEx的用途 : 搜索, 替换 2. 匹配单个字符 2.1 匹配纯文本, 比如 /Ben/ 就匹配文本里含Ben的, 但绝大多数RegEx引擎默认只返回第一个 匹配结果。注: RegEx区分大小写。 2.2 英文句号 . 用

整理简化自 《正则表达式必知必会》前六章, Ben Forta 著。

1. RegEx的用途

搜索, 替换


2. 匹配单个字符
2.1 匹配纯文本, 比如 /Ben/ 就匹配文本里含Ben的, 但绝大多数RegEx引擎默认只返回第一个
匹配结果。注: RegEx区分大小写。
2.2 英文句号. 用来匹配任意单个字符(包括空格,但绝大多数情况下, 不匹配换行符)。
注: 匹配的并不总是整个字符串, 而是与某个模式相匹配的字符,即使它们只是整个字符串的
一部分。
如: 文本: sales1.xls order3.xls sales2.xls
RegEx: sales.
结果:sales1.xls order3.xlssales2.xls
想要匹配 . 本身, 需用. 来进行匹配。

3. 匹配一组字符
3.1.[ 和 ] 定义一个字符集合, 这两个元字符之间的所有字符都是该集合的组成部分,字符集合的匹
结果是能够和该集合里的任一个成员相匹配的文本。
如 [ns]a..xls 可用来匹配 na1.xls,na2.xls,sa1.xls
3.2. 字符区间用- (连字符)来定义。如[0-5]和[012345]等价, 常用的有[0-9a-zA-Z]用来匹配任
个字母(不分大小写)或数字。
3.3. ^ 用来取非匹配。除了那个字符集合里的字符, 其他字符都可以匹配。[^0-9]将匹配任意一个
是数字的字符。 ^将作用于给定字符集合里的所有字符或字符区间, 而不是仅限于紧跟在 ^
后面 的那一个字符或字符区间。

4. 使用元字符
4.1. 用 对特殊字符进行转义,如 [,],
4.2. 空白元字符:
b 回退(并删除)一个字符(Backspace键)
f 换页符
n 换行符
r 回车符
t 制表符(Tab键)
v 垂直制表符

4.3. 匹配特定的字符类别
d 任意一个数字字符(等价于[0-9])
D 任意一个非数字字符,即[^0-9]
w 任意一个字母数字字符(大小写均可)或下划线字符,即[0-9a-zA-Z_]
W 任意一个非字母数字或非下划线字符, 即[^a-zA-Z0-9_]
s 任意一个空白字符,即[fnrtv]
S 任意一个非空白字符,即[^fnrtv]
x和 分别表示十六进制数值和八进制数值


5. 重复匹配
5.1+ 匹配一个或多个字符(至少一个!),在给一个字符集合加上+后缀的时候, 应放在字符集合
的外面,如 [0-9]+ +是一个元字符,要匹配本身需使用 +
5.2 * 匹配零个或多个字符(可有可无), 意为“在我前面的字符或字符集合是可选的”。如 B.* 可匹
配 Ben
5.3 匹配0个或一个字符(最多不超过一次)
5.4 为重复匹配次数设定一个精确的值。如 #[0-9A-Fa-f]{6} 可用来匹配RGB值(6位的十六进制数
值)
5.5 为重复匹配次数设定一个区间,如 d{2,4}用来匹配2到4位的数字。
5.6 至少重复多少次,如 {3,} 匹配至少重复3次
5.7 防止过度匹配。* 和 + 都是“贪婪型”元字符,他们在进行匹配时的行为模式是多多益善而不是适
可而止的。下表是常见的贪婪型元字符和对应的懒惰型版本。
贪婪型元字符 懒惰型元字符
* *?
+ +?
{n,} {n,}?

6. 位置匹配
6.1 由 b 指定的单词边界,用来匹配一个单词的开始或结尾。如 bcatb 可以匹配 Thecat
scattered 中的第一个cat,而不能匹配第二个。
简单来说, b 匹配的是这样一个位置,这个位置位于一个能够用来构成单词的字符(字母,数
字,下划线,即w相匹配的字符)和一个不能用来构成单词的字符(与W相匹配的字符)之间。
6.2 字符串边界:^ 用来定义字符串开头, $用来定义字符串结尾
注: ^ 是有着多种用途的元字符之一,只有当它出现在一个字符集合里并紧跟在[ 后面时,才能
发挥求非作用。
6.3(?m) 记号是用来启用分行匹配模式的,该模式将使得RegEx引擎把行分隔符当做一个字符串分隔
符来对待。在分行匹配模式下,^ 不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后
面的开始位置(该位置是不可见的);类似地 $不仅匹配正常的字符串结尾,还将匹配行分隔符
后面的结束位置。
使用时,(?m)必须出现在整个模式的最前面。
注: 1.很多RegEx实现不支持(?m);
2. 有些RegEx实现还支持使用 A 和 Z 来定义一个字符串的开头和结尾,但 A 和 Z 不会因
加上了(?m)前缀而改变行为 。

sublime里面不要用简单的ctrl-f了,再加上个Alt+R吧, 恩。
这次从印象笔记里直接拷过来居然格式没有问题,略神奇, 恩。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读