Java 正则表达式全攻略(四)
[ 2010-04-23 12:45:27.0 | 作者: 随想 类别: 基础强化
]
来源:网络收集
浏览 2637
labels:Java 正则表达式全攻略(四) java正则表达式 边界匹配器 分支
边界匹配器
^
|
行的开头 |
$
|
行的结尾 |
\b
|
单词边界 |
\B
|
非单词边界 |
\A
|
输入的开头 |
\G
|
上一个匹配的结尾 |
\Z
|
输入的结尾,仅用于最后的结束符(如果有的话) |
\z
|
输入的结尾 |
边界匹配和一般的正则表达式符号不同,它不匹配任何字符。相反,他们匹配的是字符之前或之后的位置;因此,你不可使用边界匹配器来捕获内容。 ^a
将会匹配字符串“abc”中的a。 ^b
将不会匹配“abc”中的任何字符。类似的,$匹配字符串中最后一个字符的后面的位置。所以 c$
匹配“abc”中的c。
在日常工作中边界匹配是十分有用的。例如用户输入中,常常会有多余的前导空格或结束空格。你可以用 ^\s*
和 \s*$
来匹配前导空格或结束空格。还有,如果你想检查一段对话内 Frank 这个名字出现了多少次,你可以使用 \bFrank\b
进行匹配,他不会把 Frank 和 Frankie 当成同一个人。
基本上边界匹配都比较容易理解,不过还有有些地方稍微注意一下的。
注意行结束符
行结束符是一个或两个字符的序列,标记输入字符序列的行结尾。以下代码被识别为行结束符:
-
新行(换行)符 ('\n'
)、
-
后面紧跟新行符的回车符 ("\r\n"
)、
-
单独的回车符 ('\r'
)、
-
下一行字符 ('\u0085'
)、
-
行分隔符 ('\u2028'
) 或
-
段落分隔符 ('\u2029
)。
如果你所要匹配的内容有多行,需要使用行边界配置,请不要忘记打开多行模式。因为默认情况下,正则表达式 ^
和 $
仅分别与整个输入序列的开头和结尾匹配。就拿下面一段代码来说,
1:
String string = "This is\r\na test\r\nString."
;
2:
Pattern p = Pattern.compile("^.+$"
, Pattern.MULTILINE); // 打开多行匹配模式
3:
Matcher m = p.matcher(string);
4:
while
(m.find()) {
5:
System.out.println("["
+ m.group() + "]"
);
6:
}
如果你没有打开多行配置模式,你将无法匹配任何内容。
此外,还需要注意的是 .
和行结束符的关系,如果未指定 DOTALL 标志的情况下,则正则表达式 .
可以与任何字符(行结束符除外)匹配。
分支的实现
正则表达式中“|”表示选择。你可以用选择符匹配多个可能的正则表达式中的一个。如果你想搜索文字“cat”或“dog”,你可以用 cat|dog
。选择符在正则表达式中具有最低的优先级,也就是说,它告诉引擎要么匹配选择符左边的所有表达式,要么匹配右边的所有表达式。你也可以用圆括号来限制选择符的作用范围。如 \b(cat|dog)\b
,这样告诉正则引擎把(cat|dog)当成一个正则表达式单位来处理。
注意个选择的顺序
\d{5}-\d{4}|\d{5}
这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。如果你把它改成 \d{5}|\d{5}-\d{4}
的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。
分享到:
相关推荐
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache...
java,正则表达式,详解,java正则表达式,PDF
java正则表达式java正则表达式java正则表达式java正则表达式java正则表达式java正则表达式
正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
JAVA正则表达式JAVA正则表达式JAVA正则表达式
java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效
Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~
java 正则表达式 java 正则表达式 java 正则表达式java 正则表达式java 正则表达式
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
java正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdf
Java正则表达式介绍和练习Java正则表达式介绍和练习Java正则表达式介绍和练习
JAVA正则表达式应用:任意输入一串字符串 如何输入exit退出程序;从输入的字符串中判断是否包含手机号码 正则表达式可以使用" +86| 86 1 d{10}" 如果包含请将其在控制台打印出来 否则输出不包含字符串 ...
正则表达式的使用 java正则表达式的使用示例 java正则表达式
java实现用正则表达式的方法提取html中的信息,可以提取标题,正文,链接等。经过运行,没问题的
Java正则表达式应用总结
正则表达式匹配工具很好很强大 放心使用 内附各种经典正则匹配公式
Java正则表达式入门介绍.ppt,介绍常用语法规则及使用方式等
java正则表达式验证IP地址