知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

正则表达式(常用符号死背)

发表时间:2022-03-26来源:网络

正则

一、理论

所有的开发中百分百都会使用,不会用复杂的,一般几种情况下使用:验证、拆分、替换;

理论很简单,这里都懒得说了,也没有什么好说的,正则比较普通方法用起来快,比较简化。

二、记忆:

正则是在java1.4版本加入的,最早起源于liunx的,在java中是通过apache下载相关的正则开发包才可以完成,也就是java.util.regex(这个就是正则的jar包),其中包里含有两大类:1.pattern;2.Matcher;这两个类几乎不使用,我们只需记下以下常用的即可:

常用(记)

1.字符(如果不加入量词,表示单个字符)

如:

a:表示由指定的字母a组成;(同理其他字母也可以)

输出为trun,若是str=“ab”,输出就为false了,除非str.matches(“ab”)输出才是true;

\\:匹配一个“\”,也就是转移字符

这会报错,两个\\就是一个\

\t:匹配“\t”转义字符

\n:匹配换行的转义字符

2.字符范围(如果不加入量词,表示单个字符)

如:

[abc]:表示字母中含有a、b、c其中任一位字母即可,大写不行。(也可以写其他)

[^abc]:取反[abc]的(反义词),表示不是字母中含有a、b、c其中任一位字母

[a-zA-Z]:表示任一位字母(大写或小写)组成,如果[a-z],这样就不能是大写

[^a-zA-Z]:取反[a-zA-Z]的(反义词)

3.简化表达式

.  :表示任意一位字符(注意,代码里不能直接写.,要加\,如:  \.)

注意:以下的两个\表示一个\

\d :表示任意一位数字,等价于[0-9],   例如(差不多)

这样是true,要是str=“a”,就是false了

\D  :取反(\d)的反义词,表示任意一位非数字,等有价于[^0-9],

\w   :表示任意一位字符,由字符、数字、_组成,等价于[a-zA-Z_];(不包含 . )

\W  :取反(\w)的反义词,等价于[^a-zA-Z_],如str=“$”,这个是true

\s    :表示任一空格,可能是\n或\t

\S    :取反(\s)的反义词,表示非空格

4.边界匹配(一般java很少用,javaScript会用到)

如:

^ :表示正则匹配的开始(java不用)

$ :表示正则匹配的结束

5.量词描述:如果没有量词,那么每一个出现的正则都只能匹配一个字符;

表达式? :表示此正则表达式可以出现0次或1次;

str=“”或“1”都是true,如果是=“11”就是false

表达式+   :表示此正则表达式可以出现1次或多次;

str=“1”或“111”都是true,如果是=“”就是false

表达式*    :表示此正则表达式可以出现0次、1次或多次;

表达式{n}    :表示此正则表达式可以出现n次,包含n次

表达式{n,m} :表示此正则表达式可以出现n到m次

6.逻辑运算

如:

X正则Y正则:表示X正则之后紧跟着验证Y正则;

X正则 | Y正则:表示两个正则选一个;

() :表示一组正则;

三、String对正则的支持(范例欣赏)

范例:进行替换

要求把非字母拆掉

输出:

正则的原理就是离散型数学,我也没有学会。

范例:进行拆分

按照数字拆分,有些说写[0-9]

可是结果:

所以要这么写:

//一般不会这么写,应该是:

结果是:

对于替换和拆分使用正则并不麻烦,最麻烦的是进行字符串的结构验证;

范例:判断某一个字符串是否是消失,如果是则将其转换为Double类型

比如:str = “10.2”

这里要进行拆分分析,一般大家都会这么拆分的

代码如下,输出是10.2没错:

若是写str="10.",这个支持这种语法也没错,但是这种写法不合理(数学没有这种写法,最少后面跟着小数位),按照上面的代码,“10.”这样的格式不会报错,还是true,所以我们不能这么写;

小数点和2是什么关系,有小数点才会有小数位

所以要这么分析,加个括号

代码如下:

这种情况,运行结果就会是false了。

只有小数点跟小数位同时出现,比如str="10.1",这时候才是true


范例:匹配日期

如果想要将字符串变成日期则一定要使用SimpleDateFormat程序类,但是这个类需要满足特定的程序要求

输出:


范例:匹配电话号码

老规矩,写代码前先分析,第一种,电话号码一般是七位到八位,所以

代码就出来了:

输出:

第二种形式,前面010和-看成一体:

代码也简单出来了:

第三种形式分析如下,注意这里括号和\\太多别搞错:

代码如下,谁看着不晕?所以一下子直接写完不可能,要先分析,慢慢写

输出也是true

正则验证email是相当好用

范例:验证email地址

1.简单验证,email由字母、数字、_组成,例如:a@a.c

我们先分析:

所以代码如下:

2.完整验证:在email的用户名可以由字母、数字、_、-、.组成和长度最大数量6-30位,其中要求以字母开头,域名后缀只能是:

例如:

先分析,其中{5,29}是因为首字母占了一个,减1即可,还有com判断记得加的括号()是这个,不能是中括号

代码如下:

六、java.util.regex包中的直接操作(这个不作为重点)

拆分例子:

输出:

以上操作String也存在此方法,所以这里我们一般不用Pattern类

Matcher类主要是进行匹配

Matcher主要是取得实例化对象:

在Matcher类由如下方法:

1.字符串匹配:

2.字符串替换:

范例:匹配操作

输出,感觉不如String方便:

只有在复杂操作才用到此方法,比如分组操作,一般用不到。

Pattern和matcher这两个类主要功能都在String中提供了支持,所以大部分情况下不考虑使用这两个类。

总结:

正则表达式提供了更为强大的字符串验证与操作的功能,对于正则操作常用标记必须记熟,什么语言都有正则,虽然调用形式不同,但是标准正则支持是完全一样的。

100%拿下。


收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜