一、概述

正则表达式通常被用来对字符串提供范围性的校验、替换那些符合某个模式(规则)的文本。

正则表达式所对应的类Pattern,所有的正则表达式都是在这个类下创建的。Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。

Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作。Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持。

完成使用方法如下:

String str = "abc";//指定校验格式

Pattern p = Pattern.compile("abc");//将当前的规则和判断字符串进行匹配

Matcher m =p.matcher(str);//进行判断

boolean b =m.matches();

System.out.println(b);

二、正则表达式常用符号介绍

1、[ ] 表示匹配括号中的任意一个字符。比如:

[a - z ]:表示匹配任意一个小写字母。

2、^字符:如果用在[ ]内表示非;如果^放在了整个表达式的开头,表示强制以当前字符开头。比如:

[^a-z]:表示除了小写字母以外的字符;^[a-z]则表示以小写字母开头。

3、预定义符号:

.:表示任意字符;

\w:表示单词字符 [a-zA-Z_0-9]

\d:表示数字[0-9];

\s:表示空白字符:[ \t\n\x0B\f\r];

\D:表示非数字: [^0-9]

\W:表示非单词字符:[^\w]

\S:表示非空白字符:[^\s]

示例如下:

public static voidmain(String[] args) {

String str= "\\\\";//1. 字符串是由3个字符组成:第一个字符只能从a/b/c,第二个字符只能由r/s/t//第三个字符是数字//[xyz] - 表示可以是x/y/z中的任何一个//[a-b] - 按照码表从a开始一直找到b//System.out.println(str.matches("[abc][rst][0-9]"));//1.判断一个字符串是否是由一个小写字母组成//System.out.println(str.matches("[a-z]"));//2. [^abc]表示除了a/b/c//System.out.println(str.matches("[^a-zA-Z]"));//3. 字符串由三个组成,第一个是字母,第二个是数字,//“.”表示任意一个字符//System.out.println(str.matches("[a-zA-Z][0-9]."));//4.判断字符串是否只有一个字符//System.out.println(str.matches("."));//匹配.//\\. 经过java编译就变成了\.,正则再转义成. 表示.//System.out.println(str.matches("\\."));//\\\\java编译\\;\\正则编译后\//\\\\ -> \\ -> \//System.out.println(str.matches("\\\\"));

System.out.println(str.matches("\\w"));

System.out.println(str);

}

4、数量词:

+:表示1次到多次 {1,};

*:表示0次多到次 {0,};

?:表示0次到一次 {0,1};

{n}:表示有且只有n次;

{n,}:表示n次及其以上;

{n,m}表示n-m次之间。

示例如下:

public static voidmain(String[] args) {

String str= "dasfd";//1. {5}恰好由n次

System.out.println(str.matches("[a-zA-Z]{5}"));//2. 至少由5个字母组成的字符串//System.out.println(str.matches("[a-zA-Z]{4}[a-zA-Z]+"));

System.out.println(str.matches("[a-zA-Z]{5,}"));//3.由6-12个字符组成

System.out.println(str.matches(".{6,12}"));

}

二、捕获组

捕获组的特征:

1、用()括起来的单元称之为捕获组;

2、在正则表达式中,会对捕获组进行自动编号,编号从1开始。这与大多数的编号从0开始不同。

3、\n表示引用编号为n的捕获组;

4、捕获组的编号从(左括号的出现位置开始依次计数。

捕获组往往用于叠字的判断,示例如下:

//{2,} -- 至少两个字符//(.)\\1+ 表示叠字

String str1 = "娃哈哈";

System.out.println(str1.matches(".*(.)\\1+.*"));//AABB 高高兴兴

String str2= "高高兴兴";

System.out.println(str2.matches(".*(.)\\1(.)\\2.*"));//abab 休息休息 (..)任意两个字符

String str3 = "休息休息";

System.out.println(str3.matches("(..)\\1"));

三、正则表达式和String结合后的使用

使用Pattern和Matcher的方式匹配太过繁琐,我们往往使用字符串直接匹配的方法进行判断。

1、字符替换

将String字符串中的字符进行替换,返回一个新的字符,原字符串不变。例如:

String str = "asfsafasf12sad17--";//将字符串替换为--

System.out.println(str.replaceAll("\\d", "-"));//将字符串中的所有的数字去掉;参数:正则表达式

System.out.println(str.replaceAll("\\d", ""));//所有非数字替换掉

System.out.println(str.replaceAll("\\D", ""));

String sub= str.replaceAll("\\D", "");

2、对字符串进行切割

以某字符或数字作为切割符将字符串进行切割成多个子串,返回一个子串数组。例如:

//切割

String str = "40asfas40as1fasdcer4";//以数字为切割符将字符串切割成多个子串//作为切割符的字符会被整个切掉//如果切割符在字符串的尾部,会被直接切掉

String[] arr = str.split("\\d");

System.out.println(arr.length);for(String s : arr) {

System.out.println(s);

}

3、使用$引用上一个捕获组,对字符串进行去重和颠倒

将字符串中的多个连续的字符去掉,或者将单词进行颠倒。比如:

String str = "Cat Dog";//将cat和dog的位置进行颠倒//在替换过程中,\n的形式不起作用//在替换过程中,如果想要引用上一个捕获组,那么需要使用$n的形式

System.out.println(str.replaceAll("(Cat)(.*)(Dog)", "$3$2$1"));

String str1= "我我我我爱爱学学学学习习";

System.out.println(str1.replaceAll("(.)\\1+", "$1"));

java的regex_Java的Regex --正则表达式相关推荐

  1. java 正则regex_Java中的正则表达式– Java Regex示例

    java 正则regex Welcome to Regular Expression in Java. It's also called Regex in Java. When I started p ...

  2. java.util.regex_java.util.regex.PatternSyntaxException:索引附近的...

    我正在用Java写一个正则表达式,但是运行程序时出现错误. private final static Pattern QUOTE_VALUE = Pattern.compile("[_]?( ...

  3. java的regex_java regex 简单使用

    Java自带了支持正则表达式的包---java.util.regex包 在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类),另外还有个异常类PatternSyntax ...

  4. day13 Java学习(常见对象正则表达式)

    常见对象(正则表达式) 概述: 指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.(其实就是一种规则) 检验方法: matches() 格式:"*******".m ...

  5. Java番外篇1——正则表达式

    Java番外篇1--正则表达式 1.什么是正则表达式 正则表达式定义了字符串的模式 正则表达式可以用来搜索.编辑或处理文本 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别 2.正则表达式 ...

  6. android 1到100000 正则,day13 Java学习(常见对象正则表达式)

    常见对象(正则表达式) 概述: 指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.(其实就是一种规则) 检验方法: matches() 格式:"*******".m ...

  7. java 正则 工具类_正则表达式工具类,正则表达式封装,Java正则表达式

    正则表达式工具类 正则表达式封装 Java正则表达式 >>>>>>>>>>>>>>>>>>& ...

  8. java 数字范围正则_Java 正则表达式

    正则表达式 概述 正则表达式定义了字符串的模式.正则表达式可以用来搜索.编辑或处理文本.正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. java.util.regex 包主要包括以下三 ...

  9. java正则匹配括号_java正则表达式方括号匹配的认识

    在java正则表达式的学习中,方括号匹配是一个重点,在这里为了让学员们对方括号匹配这个知识点有更深刻的认识和了解,广州达内的老师将为你进行一次深刻的讲解. 在正则表达式中,[]是对指定的元素进行匹配, ...

  10. java 正则 单个字符_正则表达式教程之匹配单个字符详解

    本文实例讲述了正则表达式教程之匹配单个字符.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的 ...

最新文章

  1. 95后实习生的远程办公体验(asp.net mvc\C#技术栈)
  2. 使用Spark构建简单的RESTful API
  3. WordPress获取当前分类ID的四种方法
  4. 架构重构改善既有代码的设计
  5. java5新特性静态引用、foreach、自动装箱和泛型枚举以及可变参数的总结
  6. python中的main函数可以被其他文件调用么_Python中在脚本中引用其他文件函数的实现方法...
  7. Detected problems with app native libraries (please consult log for detail): lib.so: text relocation
  8. 从开锁到中年危机的杂谈
  9. 认知图谱:知识图谱+认知推理+逻辑表达
  10. rocketMQ启动
  11. 苹果应用分身_苹果手机微信分身怎么下载?微信多开版地址
  12. Fragscapy:绕过防火墙和IDS的新工具
  13. r710服务器支持cpu列表,R720-2.5寸服务器支持哪些E5-的CPU型号
  14. 使用FreeMind辅助分解测试案例
  15. SpringMVC 13. RESTful CRUD
  16. 本地电脑做网站服务器,无需公网IP穿透映射80端口
  17. ijl15.dll丢失修复工具
  18. ios中的音频播放,好文,mark,等待后续
  19. 串口服务器单芯片 物联网网关芯片
  20. 这一代家用游戏机的模拟器需要什么样的CPU?

热门文章

  1. 轻松调整C盘分区大小
  2. 安装Ubuntu后找不到windows启动项的解决办法
  3. 淘宝返利模式的简单实现方法
  4. python-opencv:在视频中显示fps等opencv快速入门
  5. 移动硬盘打不开提示格式化怎么办?
  6. java opts配置_JAVA_OPTS设置
  7. 【光纤传输特性】图文并茂,你该了解这些
  8. 5750G GT540M显卡游戏蓝屏的终极解决方法!
  9. WinForm 无边框窗体四周阴影 窗体可拖动 无边框自定义标题栏
  10. KDD2020|字节联合密歇根州立大学提出推荐广告联合训练框架RAM(已开源)