ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

软件构造 03 正则表达式

2022-06-12 12:01:10  阅读:148  来源: 互联网

标签:03 learn 匹配 字符 正则表达式 规则 软件 java


软件构造

regex(正则表达式学习)

使用正则表达式的好处有哪些?一个正则表达式就是一个描述规则的字符串,所以,只需要编写正确的规则,我们就可以让正则表达式引擎去判断目标字符串是否符合规则。

正则表达式是一套标准,它可以用于任何语言。Java标准库的java.util.regex包内置了正则表达式引擎,在Java程序中使用正则表达式非常简单。

1. 精确匹配

A 匹配指定字符 A
\u548c 匹配指定Unicode字符 "和"

2. 匹配任意字符

可以用 . 匹配一个任意字符。

3. 数字

\d 表示任意一个数字
\D 表示任意一个非数字字符

4. 其它部分转译模糊匹配规则:

\w
:a ~ z,A ~ Z,0 ~ 9,_
大小写字母,数字和下划线

\s
空格、Tab键 空格,Tab
\W
非\w

\S
非\s a,A,&,_,……

5. 多个字符的匹配规则:

A* 任意个数字符 空,A,AA,AAA,……
A+ 至少1个字符 A,AA,AAA,……
A? 0个或1个字符 空,A
A{3} 指定个数字符 AAA
A{4,5} 指定范围个数字符 AAAA,AAAAA
A{2,} 至少n个字符 AA,AAA,AAAA,……

6. 匹配一个指定范围得字符

我们用[]表示匹配一个该范围内的指定字符

[0-9] 匹配一个0-9的数字字符
或者这样:[123456789]

[a-f] 匹配a-f的所有字母一个

[0-9a-fA-F] 可以匹配:
0-9:字符0~9;
a-f:字符a~f;
A-F:字符A~F。

7. 或规则 |

|连接的两个正则规则是或规则,例如,AB|CD表示可以匹配AB或CD。

8. 分组

现在我们想要匹配字符串learn java、learn php和learn go怎么办?一个最简单的规则是learn\sjava|learn\sphp|learn\sgo,但是这个规则太复杂了,可以把公共部分提出来,然后用(...)把子规则括起来表示成learn\s(java|php|go)。

(...)还有一个重要作用,就是分组匹配
分组的重大意义在于我们可以直接通过正则表达式的规则提取出我们想要的一个子串

例如在java中:
java.util.regex包中,用Pattern.compile构造一个正则表达式规则对象,用Patter类的观察者方法匹配后获得一个Matcher对象,如果匹配成功,就可以直接从Matcher.group(index)返回想要的子串:

正则表达式用(...)分组可以通过Matcher对象快速提取子串:

group(0)表示匹配的整个字符串;
group(1)表示第1个子串,group(2)表示第2个子串,以此类推。

9. 如何匹配中文和中文字符?

匹配特殊中文字符如中文引号,直接使用精确匹配,把中文字符敲上即可
“|” 匹配中文引号
切记要区分中文符号与英文符号

如何模糊匹配来匹配任意汉字呢?
[\u4e00-\u9fa5]可匹配Unicode编码的任意汉字
[\u4e00-\u9fa5]*可匹配任意个汉字

10. java中也使用 \作为转义符号,所以在上面正则表达式用到转移符号的地方,在java中要在加一个\才能生成字符串中的\字符。

例如```\d```在java中是```\\d```。

标签:03,learn,匹配,字符,正则表达式,规则,软件,java
来源: https://www.cnblogs.com/yuesiyuan/p/16367714.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有