Java正则表达式匹配aabb、abab格式字符

简介: 我们开发过程中,经常用到正则表达式来匹配想要的字符串,或者从一段文本中提取想要的关键字,比如爬虫应用等。正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅java里面可以用,其他的语言也一样适用。

我们开发过程中,经常用到正则表达式来匹配想要的字符串,或者从一段文本中提取想要的关键字,比如爬虫应用等。正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅java里面可以用,其他的语言也一样适用。

1. 正则表达式基本字符

在这里插入图片描述

2. Java正则常用类Pattern类与Matcher类

Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式:
Pattren p = Pattren.compile("\d+");
Matcher不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例。
Matcher m=p.matcher("4352");
m.matches();

3. 匹配aabb、abab格式字符串

看到aabb、abab这类格式的字符串会让人想起学过的成语,比如:急急忙忙,坑坑洼洼,风风火火,彼此彼此,动次动次,哇凉哇凉。
那么我们就来通过正则表达式来匹配这一类的字符串。

//匹配aabb类型字符串
Pattern p = Pattern.compile("^(.)\\1(.)\\2$");
Matcher m=p.matcher("急急忙忙");
System.out.println("匹配aabb类型字符串:急急忙忙 "+ m.matches());

//匹配abab类型字符串
p = Pattern.compile("^(.)(.)\\1\\2$");
m=p.matcher("彼此彼此");
System.out.println("匹配abab类型字符串:彼此彼此 "+ m.matches());

解释一下,首先“^”和“$”大家都比较熟悉,表示开头和结尾。
那么“(.)”代表什么含义呢?“.”表示匹配任意字符,“(.)”表示匹配任意字符的一个分组,如果出现多个括号,就有多个分组,“\1”表示引用第一个分组,“\2”引用第二个分组,依次类推。所以,"^(.)\1(.)\2$" 这个表达式表示的意思就是,第一个字符出现后,在第二个位置又被引用,也就是第一和第二位置的字符一样,同样,“(.)\2” 就是第二个分组的字符也被再引用一次,这样就能匹配"aabb"格式的字符串了。

接下来,如果要匹配"abac"这种类型的字符串呢,比如:“相亲相爱,绘声绘色,不吐不快” 这一类型的成语,与上面类似,实现代码如下:

//匹配abac类型字符串
        p = Pattern.compile("^(.).\\1.$");
        m=p.matcher("相亲相爱");
        System.out.println("匹配abac类型字符串:相亲相爱 "+ m.matches());

是不是很简单,希望大家自己多练习,这样就可以轻松掌握这一类正则表达式的匹配方法了。

更多技术资源、软件开发工具,欢迎访问【 昂焱数据】,这里一定有惊喜等着你!
目录
相关文章
|
4天前
|
XML JSON 监控
Java语言中的正则表达式技术详解
Java语言中的正则表达式技术详解
|
1天前
|
自然语言处理 Java
12. 【Java教程】Java 表达式、语句和块
12. 【Java教程】Java 表达式、语句和块
5 0
|
3天前
|
Java
蓝易云 - Java-Lambda表达式
这将输出 "Hello world"。这就是Java中Lambda表达式的基本用法。
19 2
|
4天前
|
Java 数据处理
Java的运算符与表达式详解
Java的运算符与表达式详解
13 1
|
4天前
|
Java API
Java的Lambda表达式与函数式接口的技术性文章
Java的Lambda表达式与函数式接口的技术性文章
6 0
|
4天前
|
Java API
Java 8新特性之Lambda表达式和Stream API
【5月更文挑战第31天】本文将详细介绍Java 8中的两个重要特性:Lambda表达式和Stream API。通过对比传统编程方式,我们将探讨这两个特性如何简化代码、提高可读性和性能。文章还将通过实例演示如何使用Lambda表达式和Stream API进行集合操作、过滤和转换等任务。
|
5天前
|
Java 开发者
Java的三元表达式用法
Java的三元表达式用法
|
5天前
|
Java 编译器
Java 8新特性之Lambda表达式与函数式接口
【5月更文挑战第30天】本文将介绍Java 8中的一个重要新特性——Lambda表达式,以及与之密切相关的函数式接口。我们将通过实例分析Lambda表达式的语法、使用方法和优势,同时探讨函数式接口的定义和应用。通过本文的学习,你将能够更好地理解和运用Java 8的这一新特性,提高编程效率和代码可读性。
|
5天前
|
Java 测试技术 编译器
Java的表达式合法性判断
Java的表达式合法性判断
|
6天前
|
存储 Java 索引
Java的基本语法格式详解
Java的基本语法格式详解
11 0