正则表达式表

Posted 傲娇的喵酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式表相关的知识,希望对你有一定的参考价值。

表示法 描述 正则表达式示例
literal 匹配文本字符串的字面值 literal foo
re1|re2 匹配正则表达式 re1 或者 re2  foo|bar
匹配任何字符(除了\n 之外)  b.b
匹配字符串起始部分  ^Dear
匹配字符串终止部分  /bin/*sh$
* 匹配 0 次或者多次前面出现的正则表达式 [A-Za-z0-9]*
匹配 1 次或者多次前面出现的正则表达式 [a-z]+\.com
匹配 0 次或者 1 次前面出现的正则表达式 goo?
{N} 匹配 N 次前面出现的正则表达 [0-9]{3}
{M,N}  匹配 M~N 次前面出现的正则表达式 [0-9]{5,9}
[…]  匹配来自字符集的任意单一字符  [aeiou]
[..x−y..]  匹配 x~y 范围中的任意单一字符  [0-9], [A-Za-z]
[^…]   不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现) [^aeiou], [^A-Za-z0-9]
(*|+|?|{})?  用于匹配上面频繁出现/重复出现符号的非贪婪版本(*、+、?、{})  .*?[a-z]
(…)  匹配封闭的正则表达式,然后另存为子组  ([0-9]{3})?,f(oo|u)bar
特殊字符

\d 匹配任何十进制数字,与[0-9]一致(\D 与\d 相反,不匹配任何非数值型的数字) data\d+.txt
\w   匹配任何字母数字字符,与[A-Za-z0-9_]相同(\W 与之相反,不匹配任何字母数字字符) [A-Za-z_]\w+
\b   匹配任何单词边界(\B 与之相反) \bThe\b
\N  匹配已保存的子组 N(参见上面的(…))  price: \16
\c  逐字匹配任何特殊字符 c(即,仅按照字面意义匹配,不匹配特殊含义)  \., \\, \*
\A(\Z)  匹配字符串的起始(结束)(另见上面介绍的^和$)  \ADear
扩展表示法

 (?iLmsux)   在正则表达式中嵌入一个或者多个特殊“标记”参数(或者通过函数/方法) (?x),(? im)
(?:…)  表示一个匹配不用保存的分组  (?:\w+\.)*
(?P…)  像一个仅由 name 标识而不是数字 ID 标识的正则分组匹配  (?P)
(?P=name)  在同一字符串中匹配由(?P<name)分组的之前文本 (?p=data)
(?#…)  表示注释,所有内容都被忽略  (?#comment)
(?=…)  匹配条件是如果…出现在之后的位置,而不使用输入字符串;称作正向前视断言  (?=.com)
(?!…)  匹配条件是如果…不出现在之后的位置,而不使用输入字符串;称作负向前视断言  (?!.net)
(?<=…)  匹配条件是如果…出现在之前的位置,而不使用输入字符串;称作正向后视断言  (?<=800-)
(?<!…)  匹配条件是如果…不出现在之前的位置,而不使用输入字符串;称作负向后视断言  (?<!192\.168\.)
(?(id/name)Y|N)  如果分组所提供的 id 或者 name(名称)存在,就返回正则表达式的条件匹配 Y,
如 果不存在,就返回 N;|N 是可选项
 (?(1)y|x)



特殊字符\b 和\B 可以用来匹配字符边界。而两者的区别在于\b 将用于匹配一个单词的边 界,这意味着如果一个模式必须位于单词的起始部分,就不管该单词前面(单词位于字符串 中间)是否有任何字符(单词位于行首)。同样,\B 将匹配出现在一个单词中间的模式(即, 不是单词边界)。下面为一些示例。


正则表达式模式  匹配的字符串
at | home  at、home
r2d2 | c3po  r2d2、c3po
bat | bet | bit  bat、bet、bit

f.o  匹配在字母“f”和“o”之间的任意一个字符;例如 fao、f9o、f#o 等
 ..  任意两个字符 
.end  匹配在字符串 end 之前的任意一个字符

^From  任何以 From 作为起始的字符串
/bin/tcsh$  任何以/bin/tcsh 作为结尾的字符串
^Subject: hi$  任何由单独的字符串 Subject: hi 构成的字符串
特殊字符\b 和\B 可以用来匹配字符边界
the  任何包含 the 的字符串
\bthe  任何以 the 开始的字符串
\bthe\b  仅仅匹配单词 the
\Bthe  任何包含但并不以 the 作为起始的字符串
创建字符集
b[aeiu]t  bat、bet、bit、but
[cr][23][dp][o2]  一个包含四个字符的字符串,第一个字符是“c”或“r”,然后是“2”或“3”
,后面 是“d”或“p”,最后要么是“o”要么是“2”。例如,c2do、r3p2、
r2d2、c3po 等
限定范围和否定如果脱字符(^)紧跟在左方括号后面,这个符号就表示不匹配给定字符
集中的任何一个字符。
z.[0-9]  字母“z”后面跟着任何一个字符,然后跟着一个数字
[r-u][env-y][us]  字母“r”、“s”、“t”或者“u”后面跟着“e”、“n”、“v”、“w”、“x”或者“y”,
然后跟着“u”或者“s”
[^aeiou]  一个非元音字符
[^\t\n]  不匹配制表符或者\n
[“-a]  在一个 ASCII 系统中,所有字符都位于“”和“a”之间,即 34~97 之间

一、

如果问号紧跟在任何使用闭合操作符的匹配后面,它将直接要求正则表 达式引擎匹配尽可能少的次数。

“尽可能少的次数”是什么意思?当模式匹配使用分组操作符时,正则表达式引擎将试图 “吸收”匹配该模式的尽可能多的字符。

这通常被叫做贪婪匹配。问号要求正则表达式引擎去 “偷懒”,如果可能,就在当前的正则表达式中尽可能少地匹配字符,留下尽可能多的字符给 后面的模式(如果存在)

正则表达式模式 匹配的字符串
[dn]ot?  字母“d”或者“n”,后面跟着一个“o”,然后是最多一个“t”,例如,do、no、dot、not
0?[1-9]  任何数值数字,它可能前置一个“0”,例如,匹配一系列数(表示从 1~9 月的数值),不 管是一个还是两个数字
[0-9]{15,16}  匹配 15 或者 16 个数字(例如信用卡号码)
</?[^>]+> 匹配全部有效的(和无效的)html 标签
[KQRBNP][a-h][1-8]-[a-h][1-8]  在“长代数”标记法中,表示国际象棋合法的棋盘移动(仅移动,不包括吃子和将军)。
 即“K”、“Q”、“R”、“B”、“N”或“P”等字母后面加上“a1”~“h8”之间的棋盘坐标。 前面的坐标表示从哪里开始走棋,
后面的坐标代表走到哪个位置(棋格)上


二、表示字符集的特殊字符

与使用“0-9”这个范围表示十进制数相比, 可以简单地使用 d 表示匹配任何十进制数字。

另一个特殊字符(\w)能够用于表示全部字母 数字的字符集,相当于[A-Za-z0-9_]的缩写形式,

\s 可以用来表示空格字符。

这些特殊字符的 大写版本表示不匹配;例如,\D 表示任何非十进制数(与[^0-9]相同),等等。 使用这些缩写,可以表示如下一些更复杂的示例。


以上是关于正则表达式表的主要内容,如果未能解决你的问题,请参考以下文章

mysql 正则表达式求解答

使用正则表达式删除表 - MySQL

使用正则表达式查找哈希表/字典/地图

完整复习(包含语法)--MYSQL正则表达式

使用正则表达式解析表 - Java

正则表达式创建 AWS Athena 表 (RegexSerDe)