jdk版本选为1.6 1.5,1.4中的正则bug较多 我们先来总结一下java正则流派的特性,这里直接完全引用《精通正则表达式》中的表格 1.字符缩略表示法 a [b] e f n r t octal x## u#### cchar --- u####只运行4位16进制数字; octal要求开头是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 首先看看正则的编译
- Pattern regex = Pattern.compile(".*?",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Pattern regex = Pattern.compile(".*?",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
正则的编译相对来说很耗时 ,所以要注意复用。 第一个参数是正则,第二个是编译选项,可以同时指定多个,当然,也可以像下面这样什么也不指定
- Pattern regex = Pattern.compile(".*?");
Pattern regex = Pattern.compile(".*?");
Matcher 我们把字符串传给matcher,然后设置各种条件,最后再用它干活 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|