java中正则表达式的.是什么java开关的作用是什么

2009年6月 挨踢职涯大版内专家分月排行榜第二2009年5月 挨踢职涯大版内专家分月排行榜第二2009年3月 挨踢职涯大版内专家分月排行榜第二2008年12月 挨踢职涯大版内专家分月排行榜第二
2009年6月 Web 开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Java正则表达式的语法与示例 - Java初级码农 - 博客园
随笔 - 44, 文章 - 0, 评论 - 15, 引用 - 0
Java正则表达式的语法与示例
1匹配验证-验证Email是否正确
Java&|&复制
public&static&void&main(String[]&args)&{
&&&&String&str&=&"";
&&&&String&regEx&=&"[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}";
&&&&Pattern&pattern&=&pile(regEx);
&&&&Matcher&matcher&=&pattern.matcher(str);
&&&&boolean&rs&=&matcher.matches();
&&&&System.out.println(rs);
2在字符串中查询字符或者字符串
Java&|&复制
public&static&void&main(String[]&args)&{
&&&&String&str&=&"baike.xsoftlab.net";
&&&&String&regEx&=&"baike.*";
&&&&Pattern&pattern&=&pile(regEx);
&&&&Matcher&matcher&=&pattern.matcher(str);
&&&&boolean&rs&=&matcher.find();
&&&&System.out.println(rs);
3常用正则表达式
正则表达式语法 &
一个或多个汉字
^[\u0391-\uFFE5]+$&
^[1-9]\d{5}$
^[1-9]\d{4,10}$&
^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$&
用户名(字母开头 + 数字/字母/下划线)
^[A-Za-z][A-Za-z1-9_-]+$
^1[3|4|5|8][0-9]\d{8}$&
^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$&
18位身份证号
^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$
4正则表达式语法
将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,&\\n&匹配\n。&\n&匹配换行符。序列&\\&匹配&\&而&\(&则匹配&(&。即相当于多种编程语言中都有的&转义字符&的概念。
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配&\n&或&\r&之后的位置。
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配&\n&或&\r&之前的位置。
匹配前面的子表达式任意次。例如,zo*能匹配&z&,&zo&以及&zoo&。*等价于{0,}。
匹配前面的子表达式一次或多次(大于等于1次)。例如,&zo+&能匹配&zo&以及&zoo&,但不能匹配&z&。+等价于{1,}。
匹配前面的子表达式零次或一次。例如,&do(es)?&可以匹配&do&或&does&中的&do&。?等价于{0,1}。
n是一个非负整数。匹配确定的n次。例如,&o{2}&不能匹配&Bob&中的&o&,但是能匹配&food&中的两个o。
n是一个非负整数。至少匹配n次。例如,&o{2,}&不能匹配&Bob&中的&o&,但能匹配&foooood&中的所有o。&o{1,}&等价于&o+&。&o{0,}&则等价于&o*&。
m和n均为非负整数,其中n&=m。最少匹配n次且最多匹配m次。例如,&o{1,3}&将匹配&fooooood&中的前三个o。&o{0,1}&等价于&o?&。请注意在逗号和两个数之间不能有空格。
当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串&oooo&,&o+?&将匹配单个&o&,而&o+&将匹配所有&o&。
匹配除&\r\n&之外的任何单个字符。要匹配包括&\r\n&在内的任何字符,请使用像&[\s\S]&的模式。
匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0&$9属性。要匹配圆括号字符,请使用&\(&或&\)&。
(?:pattern)
匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符&(|)&来组合一个模式的各个部分是很有用。例如&industr(?:y|ies)&就是一个比&industry|industries&更简略的表达式。
(?=pattern)
正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,&Windows(?=95|98|NT|2000)&能匹配&Windows2000&中的&Windows&,但不能匹配&Windows3.1&中的&Windows&。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如&Windows(?!95|98|NT|2000)&能匹配&Windows3.1&中的&Windows&,但不能匹配&Windows2000&中的&Windows&。
(?&=pattern)
反向肯定预查,与正向肯定预查类似,只是方向相反。例如,&(?&=95|98|NT|2000)Windows&能匹配&2000Windows&中的&Windows&,但不能匹配&3.1Windows&中的&Windows&。
(?&!pattern)
反向否定预查,与正向否定预查类似,只是方向相反。例如&(?&!95|98|NT|2000)Windows&能匹配&3.1Windows&中的&Windows&,但不能匹配&2000Windows&中的&Windows&。
匹配x或y。例如,&z|food&能匹配&z&或&food&或"zood"(此处请谨慎)。&(z|f)ood&则匹配&zood&或&food&。
字符集合。匹配所包含的任意一个字符。例如,&[abc]&可以匹配&plain&中的&a&。
负值字符集合。匹配未包含的任意字符。例如,&[^abc]&可以匹配&plain&中的&plin&。
字符范围。匹配指定范围内的任意字符。例如,&[a-z]&可以匹配&a&到&z&范围内的任意小写字母字符。
注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
负值字符范围。匹配任何不在指定范围内的任意字符。例如,&[^a-z]&可以匹配任何不在&a&到&z&范围内的任意字符。
匹配一个单词边界,也就是指单词和空格间的位置(即正则表达式的&匹配&有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)。例如,&er\b&可以匹配&never&中的&er&,但不能匹配&verb&中的&er&。
匹配非单词边界。&er\B&能匹配&verb&中的&er&,但不能匹配&never&中的&er&。
匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的&c&字符。
匹配一个数字字符。等价于[0-9]。
匹配一个非数字字符。等价于[^0-9]。
匹配一个换页符。等价于\x0c和\cL。
匹配一个换行符。等价于\x0a和\cJ。
匹配一个回车符。等价于\x0d和\cM。
匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
匹配任何可见字符。等价于[^ \f\n\r\t\v]。
匹配一个制表符。等价于\x09和\cI。
匹配一个垂直制表符。等价于\x0b和\cK。
匹配包括下划线的任何单词字符。类似但不等价于&[A-Za-z0-9_]&,这里的"单词"字符使用Unicode字符集。
匹配任何非单词字符。等价于&[^A-Za-z0-9_]&。
匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,&\x41&匹配&A&。&\x041&则等价于&\x04&1&。正则表达式中可以使用ASCII编码。
匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,&(.)\1&匹配两个连续的相同字符。
标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。
如果n为八进制数字(0-7),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(&)。
匹配词(word)的开始(\&)和结束(\&)。例如正则表达式\&the\&能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:这个元字符不是所有的软件都支持的。
将 \( 和 \) 之间的表达式定义为&组&(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
将两个匹配条件进行逻辑&或&(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。
匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字*(星号)在正则表达式中的作用
来源:& 作者:admin
* 可以出现0等任意次&& 相当于 {0,},比如:"\^*b"可以匹配 "b","^^^b"...
阅读: 次录入:
上一篇:下一篇:
相关新闻 & & & &
& (10/12/:52)
& (10/12/:08)
& (10/12/:54)
& (10/12/:04)
& (10/12/:54)
本文评论 & & &
<img src="pic/face9.gif"
<img src="pic/face18.gif"
alt=""/点评:
字数 姓名:
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
本周热门新闻> 博客详情
&&&&& 在Java中,我们为了查找某个给定字符串中是否有需要查找的某个字符或者子字串、或者对字符串进行分割、或者对字符串一些字符进行替换/删除,一般会通过if-else、for 的配合使用来实现这些功能 。如下所示:
Java代码 &
public&class&Test{ &&
&&public&static&void&main(String&args[])&{ &&
&&&&&&&&&String&str="@Shang&Hai&Hong&Qiao&Fei&Ji&Chang"; &&
&&&&&&&&&boolean&rs&=&false; &&
&&&&&&&&&for(int&i=0;i&str.length();i++){ &&
&&&&&&&&&&&&&&&&char&z=str.charAt(i);&& &&
&&&&&&&&&&&&&&&&if('a'&==&z&||&'F'&==&z)&{ &&
&&&&&&&&&&&&&&&&&&&&&&&rs&&=&true; &&
&&&&&&&&&&&&&&&&&&&&&&&break; &&
&&&&&&&&&&&&&&&&}else{ &&
&&&&&&&&&&&&&&&&&&&&&&&rs=&false; &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&}&&& &&
&&&&&&&&&System.out.println(rs); &&
&&&&&&&} &&
public&class&Test{
&&public&static&void&main(String&args[])&{
&&&&&&&&&String&str="@Shang&Hai&Hong&Qiao&Fei&Ji&Chang";
&&&&&&&&&boolean&rs&=&
&&&&&&&&&for(int&i=0;i&str.length();i++){
&&&&&&&&&&&&&&&&char&z=str.charAt(i);&&
&&&&&&&&&&&&&&&&if('a'&==&z&||&'F'&==&z)&{
&&&&&&&&&&&&&&&&&&&&&&&rs&&=&
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&}else{
&&&&&&&&&&&&&&&&&&&&&&&rs=&
&&&&&&&&&&&&&&&&}
&&&&&&&&&}&&&
&&&&&&&&&System.out.println(rs);
&&&&& 这种方法使用简单直观,但是 难以解决复杂的工作,而且代码量也会增加很多,不利于维护。
&&&&& 这时,我们可以使用正则表达式来实现这些功能,而且代码简单易维护。下面就来介绍了Java中对字符串的正则表达式的几个常用的功能,具体情况如下所示(其中用到了java.util.regex包):
1.Java中在某个字符串中查询某个字符或者某个子字串
Java代码 &
String&s&=&"@Shang&Hai&Hong&Qiao&Fei&Ji&Chang";&   &&
String&regEx&=&"a|F";&//表示a或F &&
Pattern&pat&=&pile(regEx); &&
Matcher&mat&=&pat.matcher(s); &&
boolean&rs&=&mat.find();&&&
String&s&=&"@Shang&Hai&Hong&Qiao&Fei&Ji&Chang";&  
String&regEx&=&"a|F";&//表示a或F
Pattern&pat&=&pile(regEx);
Matcher&mat&=&pat.matcher(s);
boolean&rs&=&mat.find();
&&& 如果s中有regEx,那么rs为true,否则为flase。
&&& 如果想在查找时忽略大小写,则可以写成Pattern pile(regEx,Pattern.CASE_INSENSITIVE);
2.在某个文件中获取一段字符串
Java代码 &
String&regEx&=&".+\(.+)$"; &&
String&s&=&"c:\test.txt"; &&
Pattern&pat&=&pile(regEx); &&
Matcher&mat&=&pat.matcher(s); &&
boolean&rs&=&mat.find(); &&
for(int&i=1;i&=mat.groupCount();i++){ &&
  System.out.println(mat.group(i)); &&
String&regEx&=&".+\(.+)$";
String&s&=&"c:\test.txt";
Pattern&pat&=&pile(regEx);
Matcher&mat&=&pat.matcher(s);
boolean&rs&=&mat.find();
for(int&i=1;i&=mat.groupCount();i++){
  System.out.println(mat.group(i));
& 以上的执行结果为test.txt,提取的字符串储存在mat.group(i)中,其中i最大值为mat.groupCount();
3.对字符串的分割
Java代码 &
String&regEx=":"; &&
Pattern&pat&=&pile(regEx); &&
String[]&rs&=&pat.split("aa:bb:cc");&&&
String&regEx=":";
Pattern&pat&=&pile(regEx);
String[]&rs&=&pat.split("aa:bb:cc");
& 执行后,r就是{"aa","bb","cc"}
&&& 如果用正则表达式分割就如上所示,一般我们都会使用下面更简单的方法:
Java代码 &
String&s&=&"aa:bb:cc"; &&
String[]&rs=s.split(":");&&&
String&s&=&"aa:bb:cc";
String[]&rs=s.split(":");
4.字符串的替换/删除
Java代码 &
String&regEx="@+";&//表示一个或多个@ &&
Pattern&pile(regEx); &&
Matcher&mat=pat.matcher("@ @b&cc@@"); &&
String&s=mat.replaceAll("#");&&&
String&regEx="@+";&//表示一个或多个@
Pattern&pile(regEx);
Matcher&mat=pat.matcher("@@aa@b&cc@@");
String&s=mat.replaceAll("#");
 结果为"##aa#b cc##"   如果要把字符串中的@都给删除,只用要空字符串替换就可以了:
String&s=mat.replaceAll("");&&
String&s=mat.replaceAll("");
& 结果为"aab cc"
注:对Pattern类的说明: & &&& 1.public final class java.util.regex.Pattern是正则表达式编译后的表达法。&&&&& 下面的语句将创建一个Pattern对象并赋值给句柄pat:Pattern pat = pile(regEx);& &&& 有趣的是,Pattern类是final类,而且它的构造器是private。也许有人告诉你一些设计模式的东西,或者你自己查有关资料。这里的结论是:Pattern类不能被继承,我们不能通过new创建Pattern类的对象。& && & 因此在Pattern类中,提供了2个重载的静态方法,其返回值是Pattern对象(的引用)。如:Java代码 &
public&static&Pattern&compile(String&regex)&{ &&
&&&&&&&&return&new&Pattern(regex,&0); &&
public&static&Pattern&compile(String&regex)&{
&&&&&&&&return&new&Pattern(regex,&0);
}& && & 当然,我们可以声明Pattern类的句柄,如Pattern pat = null;&& & 2.pat.matcher(str)表示以用Pattern去生成一个字符串str的匹配器,它的返回值是一个Matcher类的引用。& && & 我们可以简单的使用如下方法:boolean rs = pile(regEx).matcher(str).find();&
附 : 常用的正则表达式: 匹配特定数字:^[1-9]d*$    //匹配正整数^-[1-9]d*$   //匹配负整数^-?[1-9]d*$   //匹配整数^[1-9]d*|0$  //匹配非负整数(正整数 + 0)^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)评注:处理大量数据时有用,具体应用时注意修正匹配特定字符串:^[A-Za-z]+$  //匹配由26个英文字母组成的字符串^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串^[a-z]+$  //匹配由26个英文字母的小写组成的字符串^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:只能输入数字:“^[0-9]*$”只能输入n位的数字:“^d{n}$”只能输入至少n位数字:“^d{n,}$”只能输入m-n位的数字:“^d{m,n}$”只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”只能输入非零的正整数:“^+?[1-9][0-9]*$”只能输入非零的负整数:“^-[1-9][0-9]*$”只能输入长度为3的字符:“^.{3}$”只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。验证是否含有^%&’,;=?$”等字符:“[^%&’,;=?$x22]+”只能输入汉字:“^[u4e00-u9fa5],{0,}$”验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。验证身份证号(15位或18位数字):“^d{15}|d{}18$”验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”正确格式为:“01”“09”和“1”“31”。匹配中文字符的正则表达式: [u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]匹配空行的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/& (.*)&.*|& (.*) /&/匹配首尾空格的正则表达式:(^s*)|(s*$)匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
人打赏支持
码字总数 429
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥Java正则表达式的语法与示例
概要:Java正则表达式的语法与示例
匹配验证-验证Email是否正确public static void main(String[] args) {
// 要验证的字符串
String str &#61; &#34;service&#64;xsoftlab.net&#34;;
// 邮箱验证规则
String regEx &#61; &#34;[a-zA-Z_]{1,}[0-9]{0,}&#64;(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}&#34;;
// 编译正则表达式
Pattern pattern &#61; pile(regEx);
// 忽略大小写的写法
// Pattern pat &#61; pile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher &#61; pattern.matcher(str);
// 字符串是否与正则表达式相匹配
boolean rs &#61; matcher.matches();
System.out.println(rs);
}在字符串中查询字符或者字符串public static void main(String[] args) {
// 要验证的字符串
String str &#61; &#34;baike.xsoftlab.net&#34;;
// 正则表达式规则
String regEx &#61; &#34;baike.*&#34;;
// 编译正则表达式
Pattern pattern &#61; pile(regEx);
// 忽略大小写的写法
// Pattern pat &#61; pile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher &#61; pattern.matcher(str);
// 查找字符串中是否有匹配正则表达式的字符/字符串
boolean rs &#61; matcher.find();
System.out.println(rs);
}常用正则表达式规则正则表达式语法
一个或多个汉字^[\u0391-\uFFE5]&#43;$ 邮政编码^[1-9]\d{5}$QQ号码^[1-9]\d{4,10}$ 邮箱^[a-zA-Z_]{1,}[0-9]{0,}&#64;(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$ 用户名&#xff08;字母开头 &#43; 数字/字母/下划线&#xff09;^[A-Za-z][A-Za-z1-9_-]&#43;$手机号码^1[3|4|5|8][0-9]\d{8}$ URL^((http|https)://)?([\w-]&#43;\.)&#43;[\w-]&#43;(/[\w-./?%&&#61;]*)?$ 18位身份证号^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X|x)?$正则表达式语法元字符描述\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如&#xff0c;“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性&#xff0c;^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性&#xff0c;$也匹配“\n”或“\r”之前的位置。*匹配前面的子表达式任意次。例如&#xff0c;zo*能匹配“z”&#xff0c;“zo”以及“zoo”。*等价于{0,}。&#43;匹配前面的子表达式一次或多次(大于等于1次&#xff09;。例如&#xff0c;“zo&#43;”能匹配“zo”以及“zoo”&#xff0c;但不能匹配“z”。&#43;等价于{1,}。?匹配前面的子表达式零次或一次。例如&#xff0c;“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。{n}n是一个非负整数。匹配确定的n次。例如&#xff0c;“o{2}”不能匹配“Bob”中的“o”&#xff0c;但是能匹配“food”中的两个o。{n,}n是一个非负整数。至少匹配n次。例如&#xff0c;“o{2,}”不能匹配“Bob”中的“o”&#xff0c;但能匹配“foooood”中的所有o。“o{1,}”等价于“o&#43;”。“o{0,}”则等价于“o*”。{n,m}m和n均为非负整数&#xff0c;其中n&&#61;m。最少匹配n次且最多匹配m次。例如&#xff0c;“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。?当该字符紧跟在任何一个其他限制符&#xff08;*,&#43;,?&#xff0c;{n}&#xff0c;{n,}&#xff0c;{n,m}&#xff09;后面时&#xff0c;匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串&#xff0c;而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如&#xff0c;对于字符串“oooo”&#xff0c;“o&#43;?”将匹配单个“o”&#xff0c;而“o&#43;”将匹配所有“o”。.点匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符&#xff0c;请使用像“[\s\S]”的模式。(pattern)匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到&#xff0c;在VBScript中使用SubMatches集合&#xff0c;在JScript中则使用$0…$9属性。要匹配圆括号字符&#xff0c;请使用“\(”或“\)”。(?:pattern)匹配pattern但不获取匹配结果&#xff0c;也就是说这是一个非获取匹配&#xff0c;不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。(?&#61;pattern)正向肯定预查&#xff0c;在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配&#xff0c;也就是说&#xff0c;该匹配不需要获取供以后使用。例如&#xff0c;“Windows(?&#61;95|98|NT|2000)”能匹配“Windows2000”中的“Windows”&#xff0c;但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符&#xff0c;也就是说&#xff0c;在一个匹配发生后&#xff0c;在最后一次匹配之后立即开始下一次匹配的搜索&#xff0c;而不是从包含预查的字符之后开始。(?!pattern)正向否定预查&#xff0c;在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配&#xff0c;也就是说&#xff0c;该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”&#xff0c;但不能匹配“Windows2000”中的“Windows”。(?&&#61;pattern)反向肯定预查&#xff0c;与正向肯定预查类似&#xff0c;只是方向相反。例如&#xff0c;“(?&&#61;95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”&#xff0c;但不能匹配“3.1Windows”中的“Windows”。(?&!pattern)反向否定预查&#xff0c;与正向否定预查类似&#xff0c;只是方向相反。例如“(?&!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”&#xff0c;但不能匹配“2000Windows”中的“Windows”。x|y匹配x或y。例如&#xff0c;“z|food”能匹配“z”或“food”或&#34;zood&#34;(此处请谨慎)。“(z|f)ood”则匹配“zood”或“food”。[xyz]字符集合。匹配所包含的任意一个字符。例如&#xff0c;“[abc]”可以匹配“plain”中的“a”。[^xyz]负值字符集合。匹配未包含的任意字符。例如&#xff0c;“[^abc]”可以匹配“plain”中的“plin”。[a-z]字符范围。匹配指定范围内的任意字符。例如&#xff0c;“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如&#xff0c;“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。\b匹配一个单词边界&#xff0c;也就是指单词和空格间的位置&#xff08;即正则表达式的“匹配”有两种概念&#xff0c;一种是匹配字符&#xff0c;一种是匹配位置&#xff0c;这里的\b就是匹配位置的&#xff09;。例如&#xff0c;“er\b”可以匹配“never”中的“er”&#xff0c;但不能匹配“verb”中的“er”。\B匹配非单词边界。“er\B”能匹配“verb”中的“er”&#xff0c;但不能匹配“never”中的“er”。\cx匹配由x指明的控制字符。例如&#xff0c;\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则&#xff0c;将c视为一个原义的“c”字符。\d匹配一个数字字符。等价于[0-9]。\D匹配一个非数字字符。等价于[^0-9]。\f匹配一个换页符。等价于\x0c和\cL。\n匹配一个换行符。等价于\x0a和\cJ。\r匹配一个回车符。等价于\x0d和\cM。\s匹配任何不可见字符&#xff0c;包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。\S匹配任何可见字符。等价于[^ \f\n\r\t\v]。\t匹配一个制表符。等价于\x09和\cI。\v匹配一个垂直制表符。等价于\x0b和\cK。\w匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”&#xff0c;这里的&#34;单词&#34;字符使用Unicode字符集。\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。\xn匹配n&#xff0c;其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如&#xff0c;“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。\num匹配num&#xff0c;其中num是一个正整数。对所获取的匹配的引用。例如&#xff0c;“(.)\1”匹配两个连续的相同字符。\n标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式&#xff0c;则n为向后引用。否则&#xff0c;如果n为八进制数字&#xff08;0-7&#xff09;&#xff0c;则n为一个八进制转义值。\nm标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式&#xff0c;则nm为向后引用。如果\nm之前至少有n个获取&#xff0c;则n为一个后跟文字m的向后引用。如果前面的条件都不满足&#xff0c;若n和m均为八进制数字&#xff08;0-7&#xff09;&#xff0c;则\nm将匹配八进制转义值nm。\nml如果n为八进制数字&#xff08;0-7&#xff09;&#xff0c;且m和l均为八进制数字&#xff08;0-7&#xff09;&#xff0c;则匹配八进制转义值nml。\un匹配n&#xff0c;其中n是一个用四个十六进制数字表示的Unicode字符。例如&#xff0c;\u00A9匹配版权符号&#xff08;&&#xff09;。\& \&匹配词&#xff08;word&#xff09;的开始&#xff08;\&&#xff09;和结束&#xff08;\&&#xff09;。例如正则表达式\&the\&能够匹配字符串&#34;for the wise&#34;中的&#34;the&#34;&#xff0c;但是不能匹配字符串&#34;otherwise&#34;中的&#34;the&#34;。注意&#xff1a;这个元字符不是所有的软件都支持的。\( \)将 \( 和 \) 之间的表达式定义为“组”&#xff08;group&#xff09;&#xff0c;并且将匹配这个表达式的字符保存到一个临时区域&#xff08;一个正则表达式中最多可以保存9个&#xff09;&#xff0c;它们可以用 \1 到\9 的符号来引用。|将两个匹配条件进行逻辑“或”&#xff08;Or&#xff09;运算。例如正则表达式(him|her) 匹配&#34;it belongs to him&#34;和&#34;it belongs to her&#34;&#xff0c;但是不能匹配&#34;it belongs to them.&#34;。注意&#xff1a;这个元字符不是所有的软件都支持的。&#43;匹配1或多个正好在它之前的那个字符。例如正则表达式9&#43;匹配9、99、999等。注意&#xff1a;这个元字符不是所有的软件都支持的。?匹配0或1个正好在它之前的那个字符。注意&#xff1a;这个元字符不是所有的软件都支持的。{i} {i,j}匹配指定数目的字符&#xff0c;这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3} 能够匹配字符&#34;A&#34;后面跟着正好3个数字字符的串&#xff0c;例如A123、A348等&#xff0c;但是不匹配A1234。而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字
全部评论()
资料加载中...
已关注 , 取消

我要回帖

更多关于 java开关的作用是什么 的文章

 

随机推荐