我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java正则表达式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java正则表达式

目录

一、概念

二、正则表达式语法

三、捕获组

四、Pattern类与Matcher类

1.matches( )

2.split( )

3.find( )

4.group

5.start( )和end( )

6.replace替换

7.reset( )

8.代码演示 

五、正则表达式在Java中的应用

1.判断功能

2.分割功能

3.替换功能


一、概念

正则表达式(regex)是一个字符串,由字面值字符和特殊符号组成,是用来描述匹配一个字符串集合的模式,可以用来匹配、替换和拆分字符串。

例如可以检查一个字符串是否含有某种子字符串、将匹配的子字符串做替换或者从某个字符串中取出符合某个条件的子字符串等。

二、正则表达式语法

字符匹配示例
  .任意单个字符,除换行符外jav.匹配java
 [  ][ ] 中的任意一个字符java匹配j[abc]va
  - [ ] 内表示字符范围java匹配[a-z]av[a-g]
  ^在[ ]内的开头,匹配除[ ]内的字符之外的任意一个字符java匹配j[^b-f]va  
   |x|y匹配x或y
  \将下一字符标记为特殊字符、文本、反向引用或八进制转义符

\(匹配(

$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。;$匹配位于一行及外围的;号
*零次或多次匹配前面的字符zo*匹配zoo或z
+一次或多次匹配前面的字符zo+匹配zo或zoo
?零次或一次匹配前面的字符zo?匹配z或zo
p{n}是非负整数。正好匹配 n 次o{2}匹配food中的两个o
p{n,}是非负整数。至少匹配 o{2}匹配foood中的所有o
p{n,m}M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次o{1,3}匹配fooood中的三个o
\p{P}一个标点字符 !"#$%&'()*+,-./:;<=>?@[\]^_'{|}~J\p{P}a匹配J?a
\b匹配一个字边界va\b匹配java中的va,但不匹配javar中的va
\B非字边界匹配va\B匹配javar中的va,但不匹配java中的va
\d数字字符匹配1[\\d]匹配13
\D非数字字符匹配[\\D]java匹配Jjava
\w单词字符java匹配[\\w]ava
\W非单词字符$java匹配[\\W]java
\s空白字符Java 2匹配Java\\s2
\S非空白字符java匹配 j[\\S]va
\f匹配换页符等效于\x0c和\cL
\n匹配换行符

等效于\x0a和\cJ

注意:

  • 不要在重复词符中使用空白。如B{3,6} ,不能写成 B{3, 6}。
  • 可以使用括号来将模式分组。(ab){3}匹配ababab , 而ab{3} 匹配 abbb。

三、捕获组

1. 捕获组是把多个字符当成一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

捕获组通过从左到右计算其括号来编号。

例如:在表达式((A)(B(C))) 中,存在四个这样的组:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

2. 捕获组可以通过调用matcher对象的groupCount方法来查看表达式有多少个分组。(groupCount方法返回一个int值,来表示matcher对象当前有多少个捕获组)

3. 还有一个特殊的组零(group(0)),它代表整个表达式。(该组不包括在groupCount的返回值中)

4.  以 (?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数。

四、Pattern类与Matcher类

Java的正则表达式是由java.util.regex的Pattern和Matcher类实现的。Pattern对象表示经编译的正则表达式。静态的compile( )方法负责将表示正则表达式的字符串编译成Pattern对象。

1.matches( )

boolean flag = str.matches(regex);

可以快速判断能否在str中找到regex。

2.split( )

String[ ]  ss = s.split(regex);

 用regex把字符串分隔开来,返回String数组。

3.find( )

while(matcher.find(i)){

i++;

}

Matcher.find( )的功能是发现CharSequence里的,与pattern相匹配的多个字符序列。

4.group

A(B(C))D 里面有三个组:

group(0) 是 ABCD

group(1) 是 BC

group(2) 是 C

形式为 matcher.group( )

5.start( )和end( )

如果匹配成功,start( )会返回此次匹配的开始位置,end( )会返回此次匹配的结束位置,即最后一个字符的下标加一。

如果之前的匹配不成功(或者没匹配),那么无论是调用start( )还是end( ),都会引发一 个IllegalStateException。

matcher.start( );

matcher.end( );

6.replace替换

replaceFirst(String replacement)将字符串里,第一个与模式相匹配的子串替换成replacement。

replaceAll(String replacement),将输入字符串里所有与模式相匹配的子串全部替换成replacement。

String result = s.replaceAll(regex,ss);

String result = s.replaceFirst(regex,ss);

7.reset( )

 用reset( )方法可以给现有的Matcher对象配上个新的CharSequence。

如果不给参数,reset( )会把Matcher设到当前字符串的开始处。

m.reset("java");

8.代码演示 

package zuoye2;import java.util.regex.Matcher;import java.util.regex.Pattern;public class EXjava {public static void main(String[] args) {String example = "This is a small example string";Pattern pattern = Pattern.compile("\\w+");//如果想忽略大小写敏感度,可以使用线面这个语句//Pattern pattern = Pattern.compile("\\s+",Patttern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(example);while(matcher.find()) {System.out.print("start index: "+matcher.start());System.out.print(" end index: "+ matcher.end()+" ");System.out.println(matcher.group());}//创建一个新的pattern和matcher以用选项卡替换空格sPattern replace = Pattern.compile("\\s+");Matcher matcher2 = replace.matcher(example);System.out.println(matcher2.replaceAll("\t"));}}

五、正则表达式在Java中的应用

1.判断功能

例:判断输入的手机号是否为13或者18开头

package zuoye2;import java.util.Scanner;public class EXjava {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入手机号:");String str = input.nextLine();String regex = "1[38]\\d{9}";//用正则表达式定义手机号规则boolean flag = str.matches(regex);System.out.println("手机号是:"+flag);input.close();}}

2.分割功能

例:分割年龄段

package zuoye2;import java.util.Scanner;public class EXjava {public static void main(String[] args) {Scanner input = new Scanner(System.in);        String age = "18-30";//定义年龄范围String regex = "-";String[] strArr = age.split(regex);//分割成字符串数组int startage = Integer.parseInt(strArr[0]);int endage = Integer.parseInt(strArr[1]);System.out.print("请输入年龄:");int a = input.nextInt();if(a >= startage && a <= endage) {System.out.println("Yes");}else {System.out.println("No");}input.close();}}

3.替换功能

例:将字符串的数字替换成 *

package zuoye2;import java.util.Scanner;public class EXjava {public static void main(String[] args) {Scanner input = new Scanner(System.in);        String s = "12342javawang2345";String regex = "\\d";String ss = "*";//将字符串里面的数字替换成*String result = s.replaceAll(regex, ss);System.out.println(result);input.close();}}

来源地址:https://blog.csdn.net/m0_62618110/article/details/123704869

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java正则表达式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【JAVA】正则表达式是啥?

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配
2023-08-16

Java 正则表达式详解

正则表达式(Regular Expression),又称为正规表达式、规则表达式、常规表示法等,是一种用来匹配、查找和替换字符串的工具。它的语法和规则相对复杂,但却非常强大和灵活。在Java中,可以使用java.util.regex包中的类
2023-08-16

Java 之正则表达式语法及常用正则表达式汇总

正则表达式概念: 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表
2023-08-18

正则表达式

2019-01-16作用 :    路由匹配,表单信息的验证  (字符串匹配)信息提取(在大段文本中提取信息,爬虫)字符串的提取和校验[]在中括号内匹配任意项  [^]不匹配中括号中的任意一项    [0-9]  0123...9   [a
2023-01-30

Java PathVariable 是否支持正则表达式?(Java PathVariable是否支持正则表达式 )

在Java开发中,PathVariable是用于映射URL中的占位符到方法参数的注解。它在构建RESTfulAPI等场景中非常常用。然而,对于PathVariable是否支持正则表达式这个问题,可能并不是所有开发者都清楚。本文将
Java PathVariable 是否支持正则表达式?(Java PathVariable是否支持正则表达式  )
Java2024-12-13

基于Java的正则表达式

正则表达式概念 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
2023-05-31

Java中使用正则表达式

正则表达式是一种强大的文本处理工具,掌握它可以提高文本处理的效率和灵活性。在实际应用中,可以根据具体的需求来编写和调试正则表达式,以实现各种复杂的文本操作。

Python_正则表达式

正则表达式: 匹配字符串  re.compile():用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 两个函数使用,一般建议使用这种编译方式1 import re2 str = 'abc1def2ghi
2023-01-30

python 正则表达式

正则表达式的作用:用来匹配字符串 一、字符串方法字符串提供的方法是完全匹配,不能进行模糊匹配s = 'hello world'# 字符串提供的方法是完全匹配,不能进行模糊匹配print(s.find('ll')) # 2 查找ll的位
2023-01-30

python3-正则表达式

import reprint(re.search("xyx","qxyasdfxuyxyxaqd"))#寻找print(re.match("xya","qxyasdfxuyxyxaqd"))#从头匹配,失败返回Noneprint(re.ma
2023-01-31

Python3 正则表达式

1.导入正则表达式模块import re2.匹配数字print(re.findall('[0-9]','qwe21ewq'))输出结果:3.匹配字符print(re.findall('[a-zA-Z]','abC'))输出结果:匹配-,只需
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录