java正则表达式详解

正则表达式用于指定字符串的模式,你可以任何需要定位使用匹配某种特定模式的字符串的情况下使用正则表达式

jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台。

先举些入门的概念


// 反斜杠

/t 间隔 ('/u0009')

/n 换行 ('/u000A')

/r 回车 ('/u000D')

/d 数字 等价于[0-9]

/D 非数字 等价于[^0-9]

/s 空白符号 [/t/n/x0B/f/r]

/S 非空白符号 [^/t/n/x0B/f/r]

/w 单独字符 [a-zA-Z_0-9]

/W 非单独字符 [^a-zA-Z_0-9]

/f 换页符

/e Escape

/b 一个单词的边界

/B 一个非单词的边界

/G 前一个匹配的结束

^为限制开头

^java     条件限制为以Java为开头字符

$为限制结尾

java$     条件限制为以java为结尾字符

.  条件限制除/n以外任意一个单独字符

java..     条件限制为java后除换行外任意两个字符

加入特定限制条件「[]」

[a-z]     条件限制在小写a to z范围中一个字符

[A-Z]     条件限制在大写A to Z范围中一个字符

[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符

[0-9]     条件限制在小写0 to 9范围中一个字符

[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符

[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)

[]中加入^后加再次限制条件「[^]」

[^a-z]     条件限制在非小写a to z范围中一个字符

[^A-Z]     条件限制在非大写A to Z范围中一个字符

[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符

[^0-9]     条件限制在非小写0 to 9范围中一个字符

[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符

[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)

在限制条件为特定字符出现0次以上时,可以使用「*」

J*     0个以上J

.*     0个以上任意字符

J.*D     J与D之间0个以上任意字符

在限制条件为特定字符出现1次以上时,可以使用「+」

J+     1个以上J

.+     1个以上任意字符

J.+D     J与D之间1个以上任意字符

在限制条件为特定字符出现有0或1次以上时,可以使用「?」

JA?     J或者JA出现

限制为连续出现指定次数字符「{a}」

J{2}     JJ

J{3}     JJJ

文字a个以上,并且「{a,}」

J{3,}     JJJ,JJJJ,JJJJJ,???(3次以上J并存)

文字个以上,b个以下「{a,b}」

J{3,5}     JJJ或JJJJ或JJJJJ

两者取一「|」

J|A     J或A

Java|Hello     Java或Hello


在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出例外。

比如,在字符串包含验证时

//查找以Java开头,任意结尾的字符串

Pattern pattern = Pattern.compile("^Java.*");

Matcher matcher = pattern.matcher("Java不是人");

boolean b= matcher.matches();

//当条件满足时,将返回true,否则返回false

除了matchs()方法//matchs()方法得完全匹配上才会返回true

还有以下这些常用的方法

boolean find() //只要字符串中包含需要匹配的字符串模式,就返回true

int start() //返回找到字符串第一个字符的索引

int end() //返回找到字符串最后个字符的索引

int start(int groupIndex) //返回找到字符串第一个字符的索引,参数表明第几个匹配到的字符串,如果只有一个不用参数

int end(int groupIndex) //返回找到字符串最后个字符的索引,参数表明第几个匹配到的字符串,如果只有一个不用参数

String group(int groupIndex) //可能会匹配到多个字符串,参数groupIndex表示第几个匹配到的字符串,然后返回该字符串

String replaceAll(String replacement) //用replacement替换所有匹配到的字符串

下面举个例子说明

查找网址url

代码截图

这是运行结果

将所有匹配到的网址打印出来

运行结果




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 我的梦想就是做梦都在想的事情! 每天都可以睡到自然醒。如果每天可以不工作,又有源源不断的收入,那该有多好啊!可以整...
    斗图表情包下载阅读 2,152评论 0 1
  • 一、前言 这周回老家了,我的手机没有信号,不能上网。好多网友发来的消息没看见,特别是视频,手机上不能观看。并且文字...
    王颢阅读 1,050评论 0 0
  • 不知道是不是巧合,看到这个专题的时间如果在推前一段时间可能我就没有这么多的感触,可能也不会觉得这个话题和我有关系想...
    芋圆西米丸子阅读 317评论 5 7