“正则表达式”的版本间的差异

来自Wiki.Citydatum
跳转至: 导航搜索
 
第7行: 第7行:
 
=== 符号 ===
 
=== 符号 ===
 
正则表达式由'''普通字符'''和'''元字符'''(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
 
正则表达式由'''普通字符'''和'''元字符'''(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
{| class="wikitable"
+
{| 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的最新版本

TODO
提示:该页面仍需进一步完善,欢迎加入我们

正则表达式(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
^ 位置 匹配字符串起始位置,多行模式下也可匹配各行行首
$ 位置 匹配字符串结束位置,多行模式下也可匹配各行行尾
\ 转义 匹配特殊字符或被用作“元字符”的符号

应用

上手

参考链接