Java中//的意思是我要插入一个正则表达式的反斜线。如果想表达一位数字://d
如果想插入一个普通的反斜线则应该是,换行和制表付之类的只需使用单反斜线。/n/t
一个或者多个之前的表达式:-?//d+(可能有一个负号,后面跟着一位或多位数字)
?:可能有也可能没有
+:一个或多个之前的表达式
(-1|//+)?:字符串的开始字符可能是一个-或则+,或两者都没有(因为后面有?)。
总结:有特殊意义的正则表达式负号如/d或者字符 ,如+,要用//来进行转义。//d //+
B:指定字符B
/xhh 十六进制值为:oxhh的字符
/uhhhh 十六进制为uuuu的字符
/t:制表负
/n:换行负
/r:回车负
/f:换页
/e:转义(Escape)
. 任意字符
[abc] 包含a、b和c的任何字符(同a|b|c)
[^abc] 除a、b、c之外的任何字符(否定)
[a-zA-Z] 从a-z或从A-Z的任何字符(范围)
[abc[hij]] 同(a|b|c|h|i|j) (合并)
[a-z&&[hij]] 任意h,i或j(交集)
/s 空白字符(空格 tab 换行 换页和回车)
/S 非空白字符([^/s])
/d 数字[0-9]
/D 非数字[^0-9]
/w 词字符[a-zA-z0-9]
/W 非词字符[^/w]
逻辑操作符
XY Y跟在X后面
X|Y X或Y
(X) 捕获组,可以在表达式中用/i引用第i个捕获组。
边界匹配符
^ 一行的开始
$ 一行的结束
/b 词的边界
/B 非词的边界
/G 前一个匹配的结束
量词描述了一个模式吸收输入文本的方式
贪婪型:
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
勉强型:
?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{n}? | X,恰好 n 次 |
X{n,}? | X,至少 n 次 |
X{n,m}? | X,至少 n 次,但是不超过 m 次 |
占有型:
X?+ | X,一次或一次也没有 |
X*+ | X,零次或多次 |
X++ | X,一次或多次 |
X{n}+ | X,恰好 n 次 |
X{n,}+ | X,至少 n 次 |
X{n,m}+ | X,至少 n 次,但是不超过 m 次 |
用() 按照我们期望的效果去执行