“正则表达式”的版本间的差异
来自Wiki.Citydatum
(创建页面,内容为“{{提示|该页面仍需进一步完善,欢迎加入我们}} 正则表达式(Regular Expression,常简写为regex、regexp)是计算机科学的一个概…”) |
小 |
||
(未显示同一用户的1个中间版本) | |||
第7行: | 第7行: | ||
=== 符号 === | === 符号 === | ||
正则表达式由'''普通字符'''和'''元字符'''(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。 | 正则表达式由'''普通字符'''和'''元字符'''(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。 | ||
− | + | {| class="wikitable" width="100%" | |
+ | |- | ||
+ | ! 元字符 !! 作用 !! 描述 !! 示例 | ||
+ | |- | ||
+ | | width="8%" | . || width="8%" | 通配符 || width="42%" |匹配除换行符(\n)和回车符(\r)之外的任意字符 || width="42%" | <code>b.d</code> 可匹配bed、bid、b8d等; | ||
+ | |- | ||
+ | | [ ] || 集合 || 匹配集合中的任意字符 || <code>[abc]</code>,<code>[123]</code> | ||
+ | |- | ||
+ | | [ - ] || 范围 || 出现在两个字符之间时表示范围,匹配该范围内任意字符 || <code>[a-z]</code>匹配任意小写英文字母;<code>[1-9]</code>匹配任意一位正整数 | ||
+ | |- | ||
+ | | [^ ] || 取反 || 匹配任何不在指定范围内的任意字符 || <code>[^xyz]</code>匹配除x、y、z以外的任意字符 | ||
+ | |- | ||
+ | | {m,n} || 量化 || 匹配前面的子表达式至少m次且最多n次 || <code>a{3,5}</code>可匹配aaa、aaaa、aaaaa | ||
+ | |- | ||
+ | |? || 量化 || 匹配前面的子表达式零次或一次,等价于<code>{0,1}</code> || <code>colou?r</code> 可匹配 color 及 colour | ||
+ | |- | ||
+ | | * || 量化 || 匹配前面的子表达式任意次,等价于<code>{0,}</code> || <code>ab*c</code> 可匹配 ac、abc、abbc、abbbc等 | ||
+ | |- | ||
+ | | + || 量化 || 匹配前面的子表达式一次或多次,等价于<code>{1,}</code> || <code>ab+c</code> 可匹配 abc、abbc、abbbc等,但不能匹配 ac | ||
+ | |- | ||
+ | | <nowiki>|</nowiki> || 逻辑“或” || 将两个匹配条件进行逻辑“或”(Or)运算 || <code><nowiki>gray|grey</nowiki></code> 可匹配 gray 或 grey | ||
+ | |- | ||
+ | | ( ) || 组 || 括号内的表达式为“组”(group) || <code><nowiki>gr(a|e)y</nowiki></code> 等价于 <code><nowiki>gray|grey</nowiki></code> | ||
+ | |- | ||
+ | | ^ || 位置 || 匹配字符串起始位置,多行模式下也可匹配各行行首 || | ||
+ | |- | ||
+ | | $ || 位置 || 匹配字符串结束位置,多行模式下也可匹配各行行尾 || | ||
+ | |- | ||
+ | | \ || 转义 || 匹配特殊字符或被用作“元字符”的符号 || | ||
+ | |} | ||
== 应用 == | == 应用 == | ||
2018年5月26日 (六) 20:51的最新版本
正则表达式(Regular Expression,常简写为regex、regexp)是计算机科学的一个概念,表示用字符序列代表的某种文本模式,用来检索、替换那些符合这个模式(规则)的文本。
概述
模式
主流的正则引擎主要分为3类,分别为DFA,传统型NFA,POSIX NFA。其中DFA、NFA两种引擎都经历了20多年的发展,各自产生了很多变体,出台POSIX NFA规避了不必要变体的继续产生。
符号
正则表达式由普通字符和元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
元字符 | 作用 | 描述 | 示例 |
---|---|---|---|
. | 通配符 | 匹配除换行符(\n)和回车符(\r)之外的任意字符 | b.d 可匹配bed、bid、b8d等;
|
[ ] | 集合 | 匹配集合中的任意字符 | [abc] ,[123]
|
[ - ] | 范围 | 出现在两个字符之间时表示范围,匹配该范围内任意字符 | [a-z] 匹配任意小写英文字母;[1-9] 匹配任意一位正整数
|
[^ ] | 取反 | 匹配任何不在指定范围内的任意字符 | [^xyz] 匹配除x、y、z以外的任意字符
|
{m,n} | 量化 | 匹配前面的子表达式至少m次且最多n次 | a{3,5} 可匹配aaa、aaaa、aaaaa
|
? | 量化 | 匹配前面的子表达式零次或一次,等价于{0,1} |
colou?r 可匹配 color 及 colour
|
* | 量化 | 匹配前面的子表达式任意次,等价于{0,} |
ab*c 可匹配 ac、abc、abbc、abbbc等
|
+ | 量化 | 匹配前面的子表达式一次或多次,等价于{1,} |
ab+c 可匹配 abc、abbc、abbbc等,但不能匹配 ac
|
| | 逻辑“或” | 将两个匹配条件进行逻辑“或”(Or)运算 | gray|grey 可匹配 gray 或 grey
|
( ) | 组 | 括号内的表达式为“组”(group) | gr(a|e)y 等价于 gray|grey
|
^ | 位置 | 匹配字符串起始位置,多行模式下也可匹配各行行首 | |
$ | 位置 | 匹配字符串结束位置,多行模式下也可匹配各行行尾 | |
\ | 转义 | 匹配特殊字符或被用作“元字符”的符号 |