原帖地址
http://www.blogjava.net/ycyk168/archive/2008/11/19/241464.html
[quote]
行的开始和结束 开始符号:^ 结束符号:$ 如:^cat 应该理解为以c作为一行的第一个字符,紧接着是a,然后是t
例如:String str = "catabdcatdetfcat"
^cat : 验证该行以c开头紧接着是a,然后是t
cat$ : 验证该行以t结尾倒数第二个字符为a倒数第三个字符为c
^cat$: 以c开头接着是a->t然后是行结束:只有cat三个字母的数据行
^$ : 开头之后马上结束:空白行,不包括任何字符
^ : 行的开头,可以匹配任何行,因为每个行都有行开头
--------------------------------------------------------------------------------------------------------------
字符组:[]表示:"或" 如:[abc]:a或者b或者c
例如:String str = "My Name is YangKai";
a[mn] : 查找a后面是m或者n的单词
[Nn][ag] : 查找N或者n后面是a或者g的单词
--------------------------------------------------------------------------------------------------------------
字符组内的连字符:- 表示:范围从开始到结束,
连字符'-'只有出现在字符组内部的时候才是连字符,其他情况只表示字符:"-"没有特殊意义
如果字符'-'出现在字符组内的第一个位置或者出现在字符组内的脱字符"^"之后,则该字符不是连字符只是一个字符而已
例如:String num = "012C34A5B!#@$-%$^%&&*&(-)*)&6FR7GD89";
[2-6] : 查找2到6之间的数字
[A-R] : 查找从A到R之间的字符
[2-6A-R] : 查找从2到6从A到R之间的字符
[2-6A-R!@^&*] : 查找从2到6从A到R之间的字符和!@^&*等特殊字符
[-2-6A-R] :查找从2到6从A到R之间的字符和-
---------------------------------------------------------------------------------------------------------------
脱字符:^ :当^出现在字符组内的第一个位置时表示:排除,即:除了....之外的,
如果脱字符没有在[]字符组的第一个位置,那么该^仅表示一个字符,没有特殊意义
[^0-9] : 查找字符串中除数字外的字符
[^2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符外的所有字符
[^-2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符和"-"外的所有字符(此处"-"只是一个字符,没有连字符的含义)
注意一下这种情况:
String str = "abcdabcd";
如果我们用表达式:d[^0-9] 只能匹配到字符串中的da,而不能匹配结尾处的d,因为结尾处的d没有任何东西让脱字符^去排除
如果我们在结尾加上一个空格的话,就可以匹配到了
-----------------------------------------------------------------------------------------------------------------
用"."去匹配任意字符
例如:03/19/76 03-19-76 03.19.76 可以用03[-/.]19[-/.]76去匹配,同样可以用03.19.76去匹配,但是03.19.76也可能匹配到
03-19A76,因为"."可以匹配任何字符
注意:如果"."放在字符组外面的话表示元字符,但是如果放在字符组里面,则表示一个普通的"."
[/quote]
http://www.blogjava.net/ycyk168/archive/2008/11/19/241464.html
[quote]
行的开始和结束 开始符号:^ 结束符号:$ 如:^cat 应该理解为以c作为一行的第一个字符,紧接着是a,然后是t
例如:String str = "catabdcatdetfcat"
^cat : 验证该行以c开头紧接着是a,然后是t
cat$ : 验证该行以t结尾倒数第二个字符为a倒数第三个字符为c
^cat$: 以c开头接着是a->t然后是行结束:只有cat三个字母的数据行
^$ : 开头之后马上结束:空白行,不包括任何字符
^ : 行的开头,可以匹配任何行,因为每个行都有行开头
--------------------------------------------------------------------------------------------------------------
字符组:[]表示:"或" 如:[abc]:a或者b或者c
例如:String str = "My Name is YangKai";
a[mn] : 查找a后面是m或者n的单词
[Nn][ag] : 查找N或者n后面是a或者g的单词
--------------------------------------------------------------------------------------------------------------
字符组内的连字符:- 表示:范围从开始到结束,
连字符'-'只有出现在字符组内部的时候才是连字符,其他情况只表示字符:"-"没有特殊意义
如果字符'-'出现在字符组内的第一个位置或者出现在字符组内的脱字符"^"之后,则该字符不是连字符只是一个字符而已
例如:String num = "012C34A5B!#@$-%$^%&&*&(-)*)&6FR7GD89";
[2-6] : 查找2到6之间的数字
[A-R] : 查找从A到R之间的字符
[2-6A-R] : 查找从2到6从A到R之间的字符
[2-6A-R!@^&*] : 查找从2到6从A到R之间的字符和!@^&*等特殊字符
[-2-6A-R] :查找从2到6从A到R之间的字符和-
---------------------------------------------------------------------------------------------------------------
脱字符:^ :当^出现在字符组内的第一个位置时表示:排除,即:除了....之外的,
如果脱字符没有在[]字符组的第一个位置,那么该^仅表示一个字符,没有特殊意义
[^0-9] : 查找字符串中除数字外的字符
[^2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符外的所有字符
[^-2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符和"-"外的所有字符(此处"-"只是一个字符,没有连字符的含义)
注意一下这种情况:
String str = "abcdabcd";
如果我们用表达式:d[^0-9] 只能匹配到字符串中的da,而不能匹配结尾处的d,因为结尾处的d没有任何东西让脱字符^去排除
如果我们在结尾加上一个空格的话,就可以匹配到了
-----------------------------------------------------------------------------------------------------------------
用"."去匹配任意字符
例如:03/19/76 03-19-76 03.19.76 可以用03[-/.]19[-/.]76去匹配,同样可以用03.19.76去匹配,但是03.19.76也可能匹配到
03-19A76,因为"."可以匹配任何字符
注意:如果"."放在字符组外面的话表示元字符,但是如果放在字符组里面,则表示一个普通的"."
[/quote]