Java中使用正则表达式

1、使用 java.util.regex.Pattern 类的  compole(表达式) 方法把正则表达式变成一个对象。

      //表达式对象:1个数字和1个字母连续
        Pattern pattern = Pattern.compile("\\d[a-z]");

2、通过Pattern 对象获取java.util.regex.Matcher 类对象,使用Matcher对象进行相应匹配操作。

      //匹配器,指定要解析的字符串datas
        Matcher matcher = pattern.matcher(datas);

  常用方法:

    matches():判断整个字符串是否符合表达式对象。

    matcher.find():判断是字符串中是否存在下一个符合要求的字符串。

    group():返回在上一次匹配操作期间由给定组捕获的输入子序列。无参时默认为0,即第1组捕获组,若参数为1,则为第2组捕获组。

    replaceAll(String str);使用指定字符串替换符合表达式的字符。

3、String类中的 split (String str)方法,支持参数为正则表达式。

测试:

public class Client {
    public static void main(String[] args) {
        //要处理的字符串
        String datas = "111aaa222bbb333ccc";
        System.out.println("待处理字符串:"+datas);
        //表达式对象:1个数字和1个字母连续
        Pattern pattern = Pattern.compile("\\d[a-z]");
        //匹配器,指定要解析的字符串datas
        Matcher matcher = pattern.matcher(datas);
        //判断整个字符串是否符合表达式对象
        System.out.println("整个字符串是否符合:"+matcher.matches());
        //在字符串中寻找下一个符合要求的对象,有则返回true
        while (matcher.find()){
            //取出匹配到的字符串
            System.out.println("符合的:"+matcher.group());//group(1)表示正则中的()()第二个捕获组的内容,以此类推。
        }
        //符合表达式的使用指定字符串替换替换
        String end = matcher.replaceAll("A");
        System.out.println("替换后:"+end);

        //分割字符串,使用正则表达式
        String me = "love0dlove0alove";
        String[] mes = me.split("0[a-z]");
        for (String s:mes){
            System.out.print(s);
        }
    }
}

测试结果:

 获取网页内的的url地址

代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Client {

    public static void main(String[] args) {
        getUrl(getString("https://www.cnblogs.com/","utf-8"));
    }

    /**
     * 给我一个字符串,我给你解析里面的url地址
     * @param str
     */
    public static void getUrl(String str){
        //创建正则表达式对象
        Pattern pattern = Pattern.compile("[a-zA-z]+://[^\\s^\"^\']*");
        //匹配器
        Matcher matcher = pattern.matcher(str);

        while (matcher.find()){
            //取出匹配到的字符串
            System.out.println("符合的:"+matcher.group());
        }
    }

    /**
     * 给我一个网页地址,我把它网页内容用字符串给你。
     * 记得指定字符集!
     * @param netAddress
     * @param charset
     * @return
     */
    public static String getString(String netAddress,String charset){
        StringBuilder sb = new StringBuilder();
        URL url = null;
        try {
            url = new URL(netAddress);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(url.openStream(), Charset.forName(charset)));){
            String temp =null;
            while ((temp=br.readLine())!=null){
                sb.append(temp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
}

运行结果:

 

posted @ 2022-11-27 21:54  在博客做笔记的路人甲  阅读(793)  评论(0编辑  收藏  举报