------非打印字符-------------------------------
\\cx    匹配由x指明的控制字符。例如, \\cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 \'c\' 字符。
\\f    匹配一个换页符。等价于 \\x0c 和 \\cL。
\\n    匹配一个换行符。等价于 \\x0a 和 \\cJ。
\\r    匹配一个回车符。等价于 \\x0d 和 \\cM。
\\s    匹配任何空白(不可见)字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。
\\S    匹配任何非空白(可见)字符。等价于 [^ \\f\\n\\r\\t\\v]。
\\t    匹配一个制表符。等价于 \\x09 和 \\cI。
\\v    匹配一个垂直制表符。等价于 \\x0b 和 \\cK。

[xyz]    字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz]    负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
[a-z]    字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
[^a-z]    负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\\b        匹配一个单词边界,也就是指单词和空格间的位置。简单讲就是行开头/结尾/与空格相邻
\\B        匹配非单词边界。“\\Ber”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\\cx        匹配由x指明的控制字符。例如,\\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\\d        匹配一个数字字符。等价于[0-9]。grep 要加上-P,perl正则支持
\\D        匹配一个非数字字符。等价于[^0-9]。grep要加上-P,perl正则支持
\\w        匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,这里的\"单词\"字符使用Unicode字符集。
\\W        匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

------特殊字符-------------------------------
$    匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 \'\\n\' 或 \'\\r\'。
( )    子表达式。子表达式可以获取供以后使用。
*    匹配前面的子表达式零次或多次。
+    匹配前面的子表达式一次或多次。
.    匹配除换行符\\n之外的任何单字符。
[    标记一个中括号表达式的开始。
?    匹配前面的子表达式零次或一次,或【指明一个非贪婪限定符】。
\\    将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, \'n\' 匹配字符 \'n\'。\'\\n\' 匹配换行符。序列 \'\\\\\' 匹配 \"\\\",而 \'\\(\' 则匹配 \"(\"。
^    匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \\^。
{    标记限定符表达式的开始。
|    指明两项之间的一个选择。

------限定符-------------------------------
*        等价于{0,}
+        等价于{1,}
?        等价于{0,1}
{n}        n非负整数。匹配确定的n次
{n,}    n非负整数。至少匹配n次
{n,m}    m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。请注意在逗号和两个数之间不能有空格。


------定位符-------------------------------
^    匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \\n 或 \\r 之后的位置匹配。
$    匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \\n 或 \\r 之前的位置匹配。
\\b    匹配一个字边界,即字与空格间的位置。
\\B    非字边界匹配。

------选择-------------------------------
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
?:        非捕获元之一
?=        非捕获元之一,正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
?!        非捕获元之一,负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

------反向引用-------------------------------
对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 \\n 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。
可以使用非捕获元字符 ?:、?= 或 ?! 来重写捕获,忽略对相关匹配的保存。
反向引用的最简单的、最有用的应用之一,是提供查找文本中两个相同的相邻单词的匹配项的能力。以下面的句子为例:
例子:Is is the cost of of gasoline going up up
正则:\\b([a-z]+) \\1\\b
结果:
Is is
of of
up up

------部分保留-------------------------------
需求:    将
        2018年9月20日
        替换为
        2018-9-20
查找正则:        (\\d{4})(年)(\\d)(月)(\\d{1,2})(日)
替换为:        \\1-\\3-\\5
------中  文-------------------------------
[\\u4e00-\\u9fa5]
------身份证-------------------------------
((([1-9][0-9]{5})([0-9]{2})((((0[13578])|(10)|(12))((0[1-9])|([12][0-9])|(3[0-1])))|(((0[469])|(11))((0[1-9])|([12][0-9])|(30)))|((02)((0[1-9])|([12][0-9]))))([0-9]{3}))|(([1-9][0-9]{5})([12][0-9]{3})((((0[13578])|(10)|(12))((0[1-9])|([12][0-9])|(3[0-1])))|(((0[469])|(11))((0[1-9])|([12][0-9])|(30)))|((02)((0[1-9])|([12][0-9]))))([0-9]{3})([0-9Xx])))
------固  话-------------------------------
(\\b(\\d{3,4}\\d{7,8})\\D)|(\\d{3,4}\\-\\d{7,8})
------邮  箱-------------------------------
[\\w!#$%&\'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&\'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
------网  址-------------------------------
[a-zA-z]+://[^\\s]*
------邮  编-------------------------------123456
\\b[1-9]\\d{5}(?!\\d)
------日  期-------------------------------2018-06-19
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
------空  行-------------------------------
^(\\s*)\\r\\n
------换  行-------------------------------
\\r\\n


 

收藏 打印