你是我心中不灭的光

如果时光倒流,我们又能抓得住什么
友情提示:背景音乐可于页面底部开启关闭

  • 推荐一个正则表达式测试网站(也可以学习,但是主要是对写的正则做解释的功能很舒服):https://regexr-cn.com/

其他语言中,\与后面的字符合起来就表示转义或者插入特殊字符

Java中,\表示在正则表达式中插入特殊字符,所以需要转义时需要写\\,所以要匹配换行符需要使用\\n,插入一个反斜杠要使用\\

下表中反斜杠含义以通用为准(非Java),斜体字表示某个特殊模式,而不是该字符串本身

模式 含义 备注
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符 \n匹配换行符,\\匹配反斜杠,\.匹配点,\(匹配括号
^ 匹配字符串开始位置 如果设置了RegExp对象Multiline属性,^还会与\n\r之后的位置匹配
$ 匹配字符串结束位置 如果设置了RegExp对象Multiline属性,$还会与\n\r之前的位置匹配
* 零次或多次匹配前面的字符或子表达式 * 等效于 {0,}
+ 一次或多次匹配前面的字符或子表达式 + 等效于 {1,}
? 零次或一次匹配前面的字符或子表达式 ? 等效于 {0,1}
{n} n 是非负整数。正好匹配 n
{n,} n 是非负整数。至少匹配 n
{n,m} mn 是非负整数,其中 n <= m。匹配至少 n 次,至多 m mn 之间的逗号两侧不能插入空格
? 在任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是”非贪心的” “非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串"oooo"中,"o+?"只匹配单个”o”,而"o+"匹配所有”o”。
. 匹配除\r、\n之外的任何单个字符 若要匹配包括”\r\n”在内的任意字符,请使用诸如”[\s\S]”之类的模式
(pattern) 成组匹配 pattern 并捕获该匹配的子表达式 创建子表达式或者一个引用,引用供下面所说 \n 模式来引用
(?:pattern) 成组匹配 pattern,但不捕获该匹配的子表达式
(?=pattern) 成组先行搜索匹配 pattern ,但不捕获该匹配 先行搜索会匹配 pattern,但是不消耗该 pattern 作为匹配到的表达式。“消耗”指匹配到对应模式的字符串后,下次搜索匹配就从该字符串之后开始。这里不消耗就是下次搜索匹配从 pattern 内开始
(?!pattern) 成组先行搜索不匹配 pattern ,但不捕获该匹配
x|y 匹配 xy 例如,`”z
[xyz] 字符集。匹配包含的任一字符 例如,"[abc]"匹配"plain"中的"a"
[^xyz] 反向字符集。匹配未包含的任何字符 例如,"[^abc]"匹配"plain""p""l""i""n"
[a-z] 字符范围。匹配指定范围内的任何字符
[^a-z] 反向范围字符。匹配不在指定的范围内的任何字符
\b 匹配一个字边界,即字与空格间的位置 例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"
\B 非字边界匹配 例如,"er\b"匹配"verb"中的"er",但不匹配"never"中的"er"
\cx 匹配 x 指示的控制字符 例如,\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 之间。如果不是这样,则假定 c 就是”c”字符本身。
\d 数字字符匹配 \d等效于 [0-9]
\D 非数字字符匹配 \D等效于 [^0-9]
\f 换页符匹配 \f等效于 \x0c\cL
\n 换行符匹配 \n等效于 \x0a\cJ
\r 匹配一个回车符 \r等效于 \x0d\cM
\s 匹配任何空白字符 空白字符,包括空格、制表符、换页符等。\s等效于[ \f\n\r\t\v]
\S 匹配任何非空白字符 \S等效于[^ \f\n\r\t\v]
\t 制表符匹配 \t等效于 \x09\cL
\v 垂直制表符匹配 \v等效于 \x0b\cK
\w 匹配任何字类字符,包括下划线 \w等效于[A-Za-z0-9_]
\W 与任何非单词字符匹配 \W等效于[^A-Za-z0-9_]
\xn 匹配 n,此处的 n 是一个十六进制转义码 十六进制转义码必须正好是两位数长。例如,"\x41"匹配"A""\x041""\x04"&"1"等效
\num 匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用 例如,(.)\1匹配两个连续的相同字符,其中(.)表示换行外任意一个字符,\1表示对第1个分组(.)匹配到的字符再引用一次,可以匹配到"daazzz"中的"aa"和3-4位置的"zz"(\w)(.)a\2匹配到" dads hgagx"中的"hgag"而匹配不到" dad"
\n 标识一个八进制转义码或反向引用 如果 \n 前面至少有 n 个捕获子表达式,那么 n 是上述的反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码
\nm 标识一个八进制转义码或反向引用 如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是上述的反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是上述的反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 nm 是八进制数字 (0-7)
\nml 标识一个八进制转义码 只有当 n 是八进制数 (0-3),ml 是八进制数 (0-7) 时,匹配八进制转义码 nml,其余与上述分析相同
\un 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符 例如,\u00A9 匹配版权符号 (©)

评论