加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式及其应用示例

发布时间:2020-12-14 00:44:51 所属栏目:百科 来源:网络整理
导读:正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻

正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式的特点:
(1)灵活性、逻辑性和功能性非常的强;
(2)可以迅速地用极简单的方式达到字符串的复杂控制;
(3)对于初学者来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

接下来,作者将会介绍正则表达式在Java语言中对字符串的常见操作:
1、匹配
实际上,使用的就是String类中的matches()方式。
2、切割
实际上,使用的就是String类中的split()方式。
3、替换
实际上,使用的就是String类中的replaceAll()方式。
4、获取
将正则表达式进行封装,通过正则对象Pattern(类)的matches方法与字符串进行关联,获取字符串操作的匹配器对象Matcher,再通过Matcher匹配器对象的方法对字符串进行操作。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexApply {
    public static void main(String[] args) {
        functionDemo_4();
    }

    /** * 获取 */
    public static void functionDemo_4() {
        String str = "Hi girl,I like you!";
        String regex = "b[a-z]{3}b";

        // 将正则表达式封装成对象
        Pattern p = Pattern.compile(regex);

        // 使用Matcher对象的方法对字符串进行操作,为了获取三个字母组成的单词,可以用查找find()方法
        Matcher m = p.matcher(str);
        System.out.println(str);

        while (m.find()) {
            // 获取匹配的字符串子序列
            System.out.println(m.group());
            System.out.println(m.start() + ":" + m.end());
        }
    }

    /** * 替换 */
    public static void functionDemo_3() {
        // 替换字符串中重叠的字母为单独一个字母
        String str = "Harbingggggongyedaxxxxxue";
        str = str.replaceAll("(.)1+","$1");
        System.out.println(str);

        // 对手机号进行模糊处理
        String tel = "18800001234";
        tel = tel.replaceAll("(d{3})d{4}(d{4})","$1****$2");
        System.out.println(tel);
    }

    /** * 分割 */
    public static void functionDemo_2() {
        // 以字符串中的重叠字母进行分割
        String str = "Harbiniiigongyejjjjdaxue";
        String[] names = str.split("(.)1+");

        for(String name : names){
            System.out.println(name);
        }
    }

    /** * 匹配 */
    public static void functionDemo_1() {
        // 验证该手机号是否满足号码规则
        String tel = "18800001234";
        String regex = "1[358]d{9}";
        boolean b = tel.matches(regex);
        System.out.println(tel + ":" + b);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读