深入入门正则表达式(java) - 3 - 正则在java中的使用

 jdk版本选为1.6

1.5,1.4中的正则bug较多



我们先来总结一下java正则流派的特性,这里直接完全引用《精通正则表达式》中的表格

1.字符缩略表示法

\a [\b] \e \f \n \r \t \0octal \x## \u#### \cchar --- \u####只运行4位16进制数字;\0octal要求开头是0,后面接1至3为10进制数字;\cchar是区分大小写的,直接对后面字符的十进制编码进行异或操作。

2.字符组及相关结构

字符组:[...],[^...],可包含运算符

几乎任何字符:点号(根据模式不同,含义不同)

字符组缩略表示法:\w \d \s \W \D \S --- \w \W只能识别ASCII字符

3.锚点及其他零长断言

行/字符串起始位置:^ \A

行/字符串结束位置:$ \z \Z

当前匹配的起始位置:\G

单词分解符:\b \B --- 能够识别Unicode字符

环视结构:(?=...) (?!...) (?<=...) (?<!...) --- 顺序环视结构中可以使用任意正则表达式,逆序环视中只能匹配长度有限的文本

4.注释及修饰模式

模式修饰符:(?mods-mods)允许出现的模式:x d s m i u

模式修饰范围:(?mods-mods:...)

注释:从#到行末(只有在启动时有效) --- 只有在使用/x修饰符或者Pattern.COMMENTS选项时,#才算注释。没有转移的ASCII空白字符将被忽略。字符组内部的注释和空白字符也会被忽略

文字文本模式:\Q...\E

5.分组及捕获

捕获型括号:(...) \1 \2...

仅分组的括号:(?:...)

固化分组:(?>...)

多选结构:|

匹配优先量词:* + ? {n} {m,n} {m,}

忽略优先量词:*? +? ?? {n}? {n,}? {m,n}?

占有优先量词:*+ ++ ?+ {n}+ {n,}+ {m,n}+

ps:其中标注为蓝绿色的内容将在之后的教程讲解





下面开始介绍java中的正则api

首先看看正则的编译

Java代码 复制代码 收藏代码
  1. Pattern regex = Pattern.compile(".*?", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Pattern regex = Pattern.compile(".*?", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);



正则的编译相对来说很耗时 ,所以要注意复用。

第一个参数是正则,第二个是编译选项,可以同时指定多个,当然,也可以像下面这样什么也不指定

Java代码 复制代码 收藏代码
  1. Pattern regex = Pattern.compile(".*?");
Pattern regex = Pattern.compile(".*?");


Matcher

我们把字符串传给matcher,然后设置各种条件,最后再用它干活 

你可能感兴趣的:(java,表达式,的)