java中正则表达式

在《java编程思想》中,java中的 \ 表示“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。”如果想插入一个普通的反斜线,那么应该使用 \\

理解:

我们使用的反斜杠,就是一个

但是在java等编程语言中,我们需要使用转义:一个文艺反斜杠 \ 表示一个普通反斜杠

正则表达式中,反斜杠也需要转义,即 \ 表示匹配一个 ,然后蛋疼的事儿就来了,当你在 java中写 \ 时,其实正则表达式引擎只接受到了一个 ,所以,如果你想让正则表达式引擎接受两个反斜杠,那么这两个斜杠都得转义。

于是,正则表达式匹配一个 是,应该写 \

这时,第一个 在 java 字符串中写为 \

第二个 在 java 字符串中写为 \

于是,你就看到了java中无比蛋疼的 \\

常用正则表达式:

1、字符

B            指定字符B

xhh       十六进制值为0xhh的字符

uhhhh   十六进制表示为0xhhhh的Unicode字符

           制表符Tab

          换车符

           回车

f           换页

e          转义(Escape)

2、字符类

.      任意字符

[abc]                包含a、b 和c的任何字符(和a|b|c作用相同)

[^abc]          除了a、b 和c之外的任何字符(否定)

[a-zA-z]        从a到z或从A到Z的任何字符(范围)

[abc[hij]]          任意a、h、i、和j字符(与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]

3、逻辑操作符

XY                       Y跟在X后面

X|Y                      X或Y

(X)                       捕获组,可以在表达式中用i表示第i个捕获组

4、边界匹配符

^                         一行的起始

$                         一行的结束

                        词的边界

B                        非词的边界

G                        前一个匹配的结束

5、量词

贪婪型                     勉强型                      占有型                     如何匹配

X?                          X??                         X?+                        一个或零个X

X*                          X*?                        X*+                        零个或多个X

X+                          X+?                      X++                        一个或多个X

X{n}                       X{n}?                    X{n}+                    恰好n次X

X{n,}                      X{n,}?                   X{n,}+                   至少n次X

X{n,m}                   X{n,m}?                X{n,m}+                X至少n次,且不要超过m次

原文地址:https://www.cnblogs.com/zihaowang/p/4964376.html