广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java正则表达式
  • 159
分享到

java正则表达式

java正则表达式 2023-09-21 13:09:48 159人浏览 独家记忆
摘要

目录 一、概念 二、正则表达式语法 三、捕获组 四、Pattern类与Matcher类 1.matches( ) 2.split( ) 3.find( ) 4.group 5.start( )和end( ) 6.replace替换 7.re

目录

一、概念

二、正则表达式语法

三、捕获组

四、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

--结束END--

本文标题: java正则表达式

本文链接: https://www.lsjlt.com/news/414071.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • java正则表达式
    目录 一、概念 二、正则表达式语法 三、捕获组 四、Pattern类与Matcher类 1.matches( ) 2.split( ) 3.find( ) 4.group 5.start( )和end( ) 6.replace替换 7.re...
    99+
    2023-09-21
    java 正则表达式
  • Java 正则表达式匹配
    1 正则表达式 1.1 什么是正则表达式 正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串(text/string),它会以定义的模式从左到右...
    99+
    2023-10-27
    正则表达式 java 开发语言
  • Java 正则表达式详解
    正则表达式(Regular Expression),又称为正规表达式、规则表达式、常规表示法等,是一种用来匹配、查找和替换字符串的工...
    99+
    2023-08-16
    Java
  • 【JAVA】正则表达式是啥?
    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配...
    99+
    2023-08-16
    java 正则表达式 mysql
  • Java 之正则表达式语法及常用正则表达式汇总
    正则表达式概念: 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表...
    99+
    2023-08-18
    正则表达式 java 开发语言
  • 正则表达式
    2019-01-16 作用 :     路由匹配,表单信息的验证  (字符串匹配) 信息提取(在大段文本中提取信息,爬虫) 字符串的提取和校验 []在中括号内匹配任意项  [^]不匹配中括号中的任意一项    [0-9]  0123......
    99+
    2023-01-30
    正则表达式
  • 【Java 基础篇】Java 正则表达式
    文章目录 导言一、正则表达式的基本概念二、使用正则表达式的步骤三、示例代码1. 匹配字符串2. 提取匹配的内容3. 替换字符串 总结 导言 正则表达式是一种强大的文本模式匹配工具...
    99+
    2023-09-18
    java 正则表达式 python
  • java正则表达式有哪些
    这篇文章主要为大家展示了“java正则表达式有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java正则表达式有哪些”这篇文章吧。 java正则表达式大全...
    99+
    2022-10-19
  • 基于Java的正则表达式
    正则表达式概念 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则...
    99+
    2023-05-31
    java 正则表达式 ava
  • qt 正则表达式
      以上是正则表达式的格式说明 以下是自己写的正则表达式  22-25行 是一种设置正则表达式的方式, 29-34行 : 29行 new一个正则表达式的过滤器对象 30行 正则表达式 的过滤格式 这个格式是0-321的任意数字都可以输入...
    99+
    2023-09-12
    qt
  • python 正则表达式
    正则表达式的作用:用来匹配字符串 一、字符串方法 字符串提供的方法是完全匹配,不能进行模糊匹配 s = 'hello world' # 字符串提供的方法是完全匹配,不能进行模糊匹配 print(s.find('ll')) # 2 ...
    99+
    2023-01-30
    正则表达式 python
  • shell正则表达式
         Shell脚本扩展一 正确表达式正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。1. 支持的命令:grep、vim、fi...
    99+
    2022-10-18
  • ORACLE 正则表达式
    ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的...
    99+
    2022-10-18
  • Python_正则表达式
    正则表达式: 匹配字符串   re.compile():用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 两个函数使用,一般建议使用这种编译方式 1 import re 2 str = 'abc1de...
    99+
    2023-01-30
    正则表达式
  • python3-正则表达式
    import re print(re.search("xyx","qxyasdfxuyxyxaqd"))#寻找 print(re.match("xya","qxyasdfxuyxyxaqd"))#从头匹配,失败返回None print(re...
    99+
    2023-01-31
    正则表达式
  • python正则表达式
    笔记:一:简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 主要介绍Python中常用的正则表达式处理函数 提高工作效率,完成内置函数无法完成的任务! 搜索常用正则表达式!-...
    99+
    2023-01-30
    正则表达式 python
  • Python3 正则表达式
    1.导入正则表达式模块 import re 2.匹配数字 print(re.findall('[0-9]','qwe21ewq')) 输出结果: 3.匹配字符 print(re.findall('[a-zA-Z]','abC')) 输出...
    99+
    2023-01-30
    正则表达式
  • PHP正则表达式
    什么是正则表达式? 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文 正则表达...
    99+
    2023-09-02
    正则表达式 php 前端
  • Linux:正则表达式
    目录 一、grep和元字符         1.1、grep         1.2、元字符 二、正则匹配          2.1、查找特定的字符          2.2、使用[]来查找集合字符         要查找short和shi...
    99+
    2023-09-08
    正则表达式 java shell linux 服务器
  • Java中怎么用正则表达式
    这篇文章将为大家详细讲解有关Java中怎么用正则表达式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学习正则表达式,用Jdk1.4后的java.util.regex模式:我们来看一些更常用的表达式的种类文...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作