正则表达式

 正则表达式的常用符号:
1.句点符号
      句点符号'."匹配任意符号,除了换行符.但是不管匹配什么字符,都必须存在,不能为空.如:
a.b可以匹配a b,a    b,acb,a9b等
2.方括号符号
         为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符.
3.或符号
或符号"|"的基本意义就是或运算,比如想匹配abc,adc,abdc,可以利用"a(b|d|bd)c"来进行匹配
4.表示匹配次数的符号
                                 
表示匹配次数的符号 符号 次数
* 0次或多次
+ 一次或多次
? 0次或1次
{n} 正好n次
{n,m} n到m次之间
{n,} 大于等于n次

 如:"ab*"可以匹配a,ab,abb,abbb
      "ab+"可以匹配ab,abb,abbb
      "ab{3}"只能匹配abbb
5.否运算符
否运算符'^"表示相反的意思,如果用在方括号内,"^"表示不想匹配的字符.如:
"a[^a-z]"可以匹配aA,a9,但是不能匹配aa,ab,ac....
6.圆括号(分组符号)
如果要把某些表达式作为一组,可以将其用括号括起来,如:
"a(b|d)+"中(b|d)作为一个整体匹配,可以匹配:abb,abd,adb....
7.其他常用符号
常用符号 符号 意义
\s 空白符(空格,tab,换行,换页,回车)
\S 非空白符([^\s])
\d 数字[0-9]
\D 非数字[^0-9]
\w 词字符[a-zA-Z_0-9]
\W 非词字符[^\w]

 
java中使用正则表达式简单示例
      java中的正则表达式是在jdk1.4中引入的,主要在java.util.regex包,核心就两个类(Pattern类和Matcher类),使用特别简单,但是功能却很强大.使用方法很简单,主要就两句话,如下:
        Pattern p=Pattern.compile("你的正则表达式");
        Matcher matcher =p.matcher("要检验的字符串");
      一个Pattern对象表示一个正则表达式的编译版本,静态的complie()方法将一个正则表达式字符串编译成一个Pattern对象.调用以输入字符串作为参数的Pattern.matcher()方法可以产生一个Matcher对象,利用Matcher对象可以判断各种类型的匹配是否成功或失败.
     下面程序检验字符串是否符合这样的要求:
(1)总长度大于2
(2)以a开头,以b结尾
(3)字符串中都必须是字母,不能出现特殊字符和数字
        Pattern p=Pattern.compile("a[a-zA-Z]+b");
        Matcher matcher =p.matcher("abb");
        System.out.println(matcher.matches());
 
下面这个示例代码的功能是分解出一句话中的每个单词     public String[] parse(String str)...{
        ArrayList array=new ArrayList();
        Pattern p=Pattern.compile("(\w|')+");
        Matcher matcher =p.matcher(str);
        while(matcher.find())
            array.add(matcher.group());
        String[] res=new String[array.size()];
        for(int i=0;i<array.size();i++)
            res[i]=array.get(i).toString();
        return res;
    }
需要注意的地方 
一些特殊符号,如"\s"在java中要这样表示:\\s

 

 

正则表达式的语法表  
  --------------------------------------------------------------  
   
  【描述】  
          用特殊字符和序列,来为正则表达式书写模式。下面的表描述了这些字符,并包括了简短的例子,来说明如何使用这些字符。    
  ________________________________________________________________  
  字符     |                                           描述    
  ----------------------------------------------------------------  
  \           |     标记下一个字符是特殊字符或文字。例如,"n"   和字符   "n"   匹配。  
              |     "\n"   则和换行字符匹配。序列   "\\"   和   "\"   匹配,而   "\("   则  
              |     和   "("   匹配。    
  ----------------------------------------------------------------  
  ^           |     匹配输入的开头。    
  ----------------------------------------------------------------  
  $           |     匹配输入的末尾。    
  ----------------------------------------------------------------  
  *           |     匹配前一个字符零或多次。例如,"zo*"   与   "z"   或   "zoo"   匹配。    
  ----------------------------------------------------------------  
  +           |     匹配前一个字符一次或多次。例如,"zo+"   与   "zoo"   匹配,但和   "z"    
              |     不匹配。      
  ----------------------------------------------------------------  
  ?           |     匹配前一个字符零或一次。例如,"a?ve?"   和   "never"   中的   "ve"   匹  
              |     配。      
  -----------------------------------------------------------------  
  .           |   匹配除换行字符外的任何单个字符。      
  -----------------------------------------------------------------  
  (pat-   |     匹配   pattern   并记住该匹配。匹配上的子字符串,可以使用   Item    
  tern)   |     [0]...[n],来从生成的   Matches   集合中取回。要匹配圆括号字  
              |     符   (   ),则需使用   "\("   或   "\)"。    
  -----------------------------------------------------------------  
  x|y       |     匹配   x   或   y。例如,"z|food"   和   "z"   或   "food"   匹配。"(z|f)  
              |     ood"   匹配   "zoo"   或   "food"。      
  -----------------------------------------------------------------  
  {n}       |   n   是非负整数。共匹配   n   次。例如,"o{2}"   和   "Bob"   中的   "o"   不匹  
              |   配,但和   "foooood"   中的前两个   o   匹配。    
  -----------------------------------------------------------------  
  {n,}     |   n   是一个非负整数。至少匹配   n   次。例如,"o{2,}"   和   "Bob"   中  
              |     的   "o"   不匹配,但和   "foooood"   中的所有   o   匹配。"o{1,}"    
              |   与   "o+"   等效。"o{0,}"   和   "o*"   等效。    
  -----------------------------------------------------------------  
  {n,m}   |   m   和   n   是非负整数。至少匹配   n   次而至多匹配   m   次。例如,"o  
              |     {1,3}"   和   "fooooood"   中的前三个   o   匹配。"o{0,1}"   和   "o?"   等  
              |   效。    
  -----------------------------------------------------------------  
  [xyz]   |   字符集合。匹配括号内的任一字符。例如,"[abc]"   和   "plain"   中  
              |   的   "a"   匹配。    
  -----------------------------------------------------------------  
  [^xyz]|   否定字符集合。匹配非括号内的任何字符。例如,"[^abc]"    
              |     和   "plain"   中的   "p"   匹配。      
  -----------------------------------------------------------------  
  [a-z]   |   字符范围。和指定范围内的任一字符匹配。例如,"[a-z]"   匹配   "a"    
              |   到   "z"范围内的任一小写的字母表字符。      
  -----------------------------------------------------------------  
  [^m-z]|   否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]"   匹配不  
              |   在   "m"   到   "z"范围内的任何字符。      
  -----------------------------------------------------------------  
  \b         |   匹配字的边界,也就是说,在字和空格之间的位置。例如,"er\b"    
              |   和   "never"   中的   "er"   匹配,但和   "verb"   中的   "er"   不匹配。      
  -----------------------------------------------------------------  
  \B         |   匹配非字边界。"ea*r\B"   和   "never   early"   中的   "ear"   匹配。      
  -----------------------------------------------------------------  
  \d         |   匹配数字字符。等价于   [0-9]。      
  -----------------------------------------------------------------  
  \D         |   匹配非数字字符。等价于   [^0-9]。      
  -----------------------------------------------------------------  
  \f         |   匹配换页字符。      
  -----------------------------------------------------------------  
  \n         |   匹配换行字符。      
  -----------------------------------------------------------------  
  \r         |   匹配回车符字符。      
  -----------------------------------------------------------------  
  \s         |匹配任何空白,包括空格、制表、换页等。与   "[   \f\n\r\t\v]"   等效。    
  -----------------------------------------------------------------  
  \S         |   匹配任何非空白字符。与   "[^   \f\n\r\t\v]"   等效。      
  -----------------------------------------------------------------  
  \t         |   匹配制表字符。      
  -----------------------------------------------------------------  
  \v         |   匹配垂直制表符。      
  -----------------------------------------------------------------  
  \w         |   匹配包括下划线在内的任何字字符。与   "[A-Za-z0-9_]"   等效。      
  -----------------------------------------------------------------  
  \W         |   匹配任何非字字符。与   "[^A-Za-z0-9_]"   等效。      
  -----------------------------------------------------------------  
  \num     |   匹配   num,其中   num   是一个正整数。返回记住的匹配的引用。例  
              |   如,"(.)\1"   匹配两个连续的同一字符。      
  -----------------------------------------------------------------  
  \n         |   匹配   n,其中   n   是八进制换码值。八进制换码值必须是   1、2、或   3   位  
              |   长。例如,"\11"   和   "\011"   都匹配制表字符。"\0011"   和   "\001"    
              |   &   "1"   是等效的。八进制换码值必须不超过   256。如果超过了,则只有  
              |   前两位组成表达式。允许在正则表达式中使用   ASCII   码。    
  -----------------------------------------------------------------  
  \xn       |   匹配   n,其中   n   是十六进制换码值。十六进制换码值必须正好是两位  
              |   长。例如,"\x41"   与   "A"   匹配。"\x041"   和   "\x04"   &   "1"   是等效  
              |   的。允许在正则表达式中使用   ASCII   码。    
  -----------------------------------------------------------------  

i,g,gi在正则表达式对象的使用中,他们分别是指表达式中的参数,请看下面整理出来的正则表达式对象说明:  
  ===================================================================  
  正则表达式对象作用:  
      保存正则表达式模式。  
   
  语法   1:  
        var   regularexpression   =   /pattern/[switch]  
   
  语法   2  
        var   regularexpression   =   new   RegExp("pattern",["switch"])    
   
  ===================================================================  
   
  正则表达式对象语法参数有以下部分:    
  ___________________________________________________________________  
  参数部分       |     描述    
  -------------------------------------------------------------------  
  pattern         |   必需的。要使用的正则表达式模式,例如使用替换方法replace  
                        |   时,就是要替换的文本。如果使用语法   1,用   "/"   字符分隔模  
                        |   式。如果用语法   2,用引号将模式引起来。    
  -------------------------------------------------------------------  
  switch           |   可选项。如果使用语法   2   要用引号将   switch   引起来。可选的开  
                        |   关选项有:  
                        |       i   (忽略大小写)  
                        |       g   (全文查找出现的所有   pattern)  
                        |       gi   (全文查找、忽略大小写)  
  -------------------------------------------------------------------  
   
  说明:  
        正则表达式对象保存用于查找字符串中的字符组合时的模式。创建正则表达式对象后,或者它被传递给字符串方法,或者字符串被传递给一个正则表达式方法。有关最近进行查找的信息被保存在   RegExp   对象中。  
        当预先知道查找字符串时用语法   1。当查找字符串经常变动或不知道时用语法   2,比如由用户输入得到的字符串。  
     
        在使用前   pattern   参数被编译为内部格式。对语法   1   来说,pattern   在该脚本被装载时被编译。对语法   2   来说,pattern   在使用前,或调用   compile   方法时被编译。    
   
   
  下面的示例演示了   replace   方法结合的正则表达式对象对文本进行替换的用法:  
   
  function   ReplaceDemo()  
  {  
      var   r,   re;  
      var   s   =   "Fox   fox   ffffffFOX   foxfoxfox   fofofofOX";  
       
      //使用正则表达式对象re来保存替换模式  
   
      re   =   /fox/;   //区分大小写的替换s中的fox字母,且只替换一次  
      r   =   s.replace(re,   "pig");  
      //r=   "Fox   pig   ffffffFOX   foxfoxfox   fofofofOX";  
      alert("区分大小写的替换s中的fox字母,且只替换一次\n\n"+r);  
   
      re   =   /fox/i;   //不分大小写的替换s中的fox字母,且只替换一次  
      r   =   s.replace(re,   "pig");  
      //r=   "pig   fox   ffffffFOX   foxfoxfox   fofofofOX";  
      alert("不分大小写的替换s中的fox字母,且只替换一次\n\n"+r);  
   
      re   =   /fox/g;   //区分大小写的全部替换s中的fox字母  
      r   =   s.replace(re,   "pig");  
      //r=   "Fox   pig   ffffffFOX   pigpigpig   fofofofOX";  
      alert("区分大小写的全部替换s中的fox字母\n\n"+r);  
   
      re   =   /fox/ig;   //不分大小写的全部替换s中的fox字母  
      r   =   s.replace(re,   "pig");  
      //r=   "pig   pig   ffffffpig   pigpigpig   fofofopig";  
      alert("不分大小写的全部替换s中的fox字母\n\n"+r);  
   
      re   =   /fox/gi;   //不分大小写的全部替换s中的fox字母,以使用ig等效  
      r   =   s.replace(re,   "pig");  
      //r=   "pig   pig   ffffffpig   pigpigpig   fofofopig";  
      alert("不分大小写的全部替换s中的fox字母,以使用ig等效\n\n"+r);  
  }  
   
  另外,   replace   方法也可以替换模式中的子表达式。  
   
  下面的范例演示了交换字符串中的每一对单词:    
  function   ReplaceDemo()  
  {  
      var   r,   re;  
      var   s   =   "The   quick   brown   fox   jumped   over   the   lazy   yellow   dog.";  
      re   =   /(\S+)(\s+)(\S+)/g;  
      r   =   s.replace(re,   "$3$2$1"); //交换每一对单词。  
      alert("交换每一对单词\n\n"+r);  
  }   
   

 

function ReplaceDemo()

{

      var r,re;

      var ss="这是一个小例子";

      re=/(\S+)(\s+)(\S+)/g;  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值