栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

学习Java的正则表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习Java的正则表达式

一.概念

      正则表达式,又称规则表达式(Regular expression,简写为regex),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。众多语言中都可以支持正则表达式,如Perl、PHP、Java、Python、Ruby等。在Java中,正则表达式是一个字符串,用来描述匹配一个字符串集合的模式。对于字符串处理来说,正则表达式是一个强大的工具。可以使用正则表达式来匹配、替换和拆分字符串。它能使我们在进行这些操作时,写代码更加简洁。

二.语法

注意:不同于其他语言,在 Java 的正则表达式中需要有两个反斜杠才能被解析为其他语言中的转义作用。

以下是常用的正则表达式术语。

       字符   说明
 将下一字符标记为特殊字符、文本、反向引用或八进制转义符
^匹配输入字符串开始的位置
$匹配输入字符串结尾的位置
*零次或多次匹配前面的字符或子表达式
+一次或多次匹配前面的字符或子表达式
零次或一次匹配前面的字符或子表达式
{n}是非负整数。正好匹配 n 次
{n,}是非负整数。至少匹配 
{n,m}M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次
x|y匹配 x 或 y
[xyz]匹配包含的任一字符
[^xyz]匹配未包含的任何字符
[a-z]匹配指定范围内的任何字符
[^a-z]匹配不在指定的范围内的任何字符
b匹配一个字边界,即字与空格间的位置
B非字边界匹配
d数字字符匹配
D非数字字符匹配
f换页符匹配
n换行符匹配
r匹配一个回车符
s匹配任何空白字符,包括空格、制表符、换页符等
S匹配任何非空白字符
t制表符匹配
v垂直制表符匹配
w匹配任何字类字符,包括下划线
W与任何非单词字符匹配

注意:正则表达式从左到右进行运算,并遵循优先级,这与算术表达式非常类似。相同优先级的从左到右进行运算,不同优先级的按优先级从高到低进行运算。

三.替换和拆分字符串

正则表达式涉及三个类:java.lang.String、java.util.regex.Pattern、java.util.regex.macher。

其中,String类中使用正则表达式的方法包括matches、replaceAll、replaceFirst、split 等,使用这些方法可以替换和拆分字符串。

1.matches()方法:告知此字符串是否匹配给定的正则表达式。

('x' 'y' 'z' 分别与四个D逐个进行比较。结果都为真,所以打印结果为true)

 ([^abc]表示匹配除了abc以外的任意字符,所以结果为false)

2.replaceAll(String regex, String replacement)方法:使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串

 (将非数字0-9的全部替换为0)

3.replaceFirst(String regex, String replacement)方法:使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串

 (只将第一个出现的非数字0-9的替换为0)

4.split(String regex, int limit)方法:根据给定正则表达式的匹配拆分此字符串。

(注意:limit参数的值决定匹配次数。如果limit<=0,split(String regex, int limit)就等同于split(String regex),否则,模式最多匹配(limit-1)次)

 (不设置limit,默认全部拆分)

 (设置了limit=2,所以匹配次数为1,拆分1次)

 

*贪婪匹配与懒惰匹配:

默认情况下,使用贪婪匹配,即匹配尽可能多的字符。例如,对于表达式:a.*b,它将会匹配最长的以a开始、以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。如果想要匹配最少的字符,只需加个 ?,也就是说,表达式 a.*?b 匹配最短的以a开始、以b结束的字符串。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号