java基础05 正则表达式

正则表达式

一、正则表达式

       正则表达式是符合一定规则的表达式。用一些特定的符号来表示一些代码操作,专门用于操作字符串。正则表达式的弊端:正则越长,阅读性越差。可以简化对字符串的复杂操作。先举出了一个例子:对QQ号码进行校验。对qq号码的要求是5~15位,0不能开头,只能是数字。原始的方法有两种:if判断和Integer的parseInt()静态方法判断是不是数字。

我们可以使用 类String的方法将String对象按照正则表达式匹配,切割,替换,获取

二、正则表达式的功能

1、匹配

使用String类的match(String regex)方法,返回的是boolean。

[abc] 表示操作对错:如果有一个字符,而且这个字符是a、b或c,返回true

[]

\d

*

?

\w

       ……

2、切割

使用String类的split(String regex)方法。1按一个或多个空格切的正则表达式是(“ +”),2“。”表示按任意字符切,“\\。”表示按。切,3按减斜线切“\\\\”,4按重复一次或多次切“(。)\\1+”。当要对一个结果重用时,用()将其封装成一个组。返回的是规则以外的字符串。

3、替换

replaceAll(String regex, String replacement)。将重叠的字符替换成单个字符(“(。)\\1+” ,“$1” ),$表示获取组中的字符。返回的是新字符串。

4、获取

简单获取字符串的子串,可以使用 类String 的方法substring(int beginIndex) substring(int beginIndex, int endIndex)。用正则表达式可以实现较复杂的获取。

步骤是1将正则表达式封装成对象,2让正则对象和要操作的字符串相关联。3关联后,获取正则匹配引擎,4通过引擎对符合规则的子串进行操作,比如取出。

关于正则表达式,在api中有描述。包java.util.regex中 类 Pattern 可以对正则表达式进行封装。类 Pattern没有对外的构造函数,不可以创建对象。方法compile(String regex)和方法 compile(String regex, int flags)是静态的,返回类型是本类对象。matcher(CharSequence input),返回类型是 类Matcher 类型。

类Matcher中有 方法matches(),返回boolean ;

方法group(),返回的是获取匹配后的结果,要先使用 方法find() 进行匹配。功能类似于迭代器。在正则表达式中有边界匹配器。\b是单词边界匹配器,例如\\b[a-z]{4}\\b是一个规定一个单词由4个小写字母组成 ,的正则表达式。需要注意的是同一个匹配器用的是同一个索引位

三、邮箱匹配

1、相对精确的匹配[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\. [a-zA-Z0-9]+)+;

相对不太精确的匹配\\w+@\\w+(\\.\\w+)+

只要有@就行:indexOf(@)!=-1

2、网页爬虫(用于获取邮箱)

import java.io.*;
import java.util.regex.*;
import java.ner.*;
class  WebpageReptile{  

   private webaddr ;
   WebpageReptile(String webaddr)  {
      this.webaddr = webaddr ;
   }

   public static void webpageReptile()throws Exception {

      URL url = new URL(webaddr);
      URLConnection conn = url.openConnerction();
    
      BufferedReader bufIn =
         newBufferedReader(new InputStreamReader(conn.getInputStream));
      String line = null;
      String mailReg = "\\w+@\\w+(\\.\\w+)+";

      while((line = bufIn.readLine())!=null){
         Matcher m = p.matcher(line);
         while(m.find()){
            so.p(m.group)
         }
      }
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值