零度非安全 发表于 2017-2-7 21:17:00

【Java正则表达式】00. 简单介绍及普通、标准、自定义字符集合

本帖最后由 零度非安全 于 2017-2-8 23:32 编辑

以下都是自己总结的,一字一码手敲上去,希望大家能跟着非安全好好地学习正则表达式{:10_323:} 。
好,那我就废话不多说,直接发车(滴~滴~滴~~~),没刷卡的请不要上车{:10_256:} 。

首先我说下我自己对正则表达式的一个理解:

正则表达式(Regular Expression)

正则正则,顾名思义,正当的规则嘛,描述一个规则(所谓无规矩不成方圆,任何事物都要遵守规则,不然就乱套了),通

过这个规则可以匹配一类字符串,学习正则表达式很大程度上就是学习它的语法,无他。

因为正则表达式是大家以后操作文本经常使用到的一种技术,对于处理一些复杂的文本非常的有帮助,鱼油们学习正则表达

式的时候可以把它当做一门独立的语言来学习,因为之后做东西的时候经常要处理文本以及字符串,当然一些简单的操作是

不需要正则表达式的。遇到稍微复杂的那么可能需要正则表达式来处理,所以大家应该好好学习下正则表达式,不仅 Java

语言,大部分编程语言、数据库、文本编辑器,开发环境都支持正则表达式。

正则表达式是一种强大而灵活的文本处理工具,那么在实际开发过程中怎么来使用正则表达式?可以归纳以下几个步骤:

一.分析所要匹配的数据,写出测试用的典型的数据

二.在工具软件中进行匹配测试

三.在程序中调用通过测试的正则表达式

接下来我要介绍一个工具,叫 RegexBuddy,软件我已打包,大家进行下载,无需安装,解压后直接运行即可。



一个猫头鹰的图标

下面我来教大家怎么用这个软件来测试正则表达式

软件的主界面:



我在这里用了鱼 C 论坛网页源代码作为测试样本,这个“编程”字符串就是正则表达式中的普通字符。那什么是普通字符

呢?简单点来说,字母、数字、汉字、下划线以及没有特殊定义的标点符号,都是“普通字符”,表达式中的普通字符,

在匹配一个字符串的时候,匹配与之相同的一个字符,下面列举简单转义字符


简单的转义字符代表的含义
\n换行符
\t制表符
\\代表 \ 本身
\^、\$、\.、\(、\)、\{、\}、\?、\+、\*、\|、\[、\]匹配这些字符本身

我在这里就拿 \t 来测试,如下:



另外几个大家可以自行测试下,在这里不一一测试。

接下来我们来谈下标准字符集合,标准字符集合能够与“多种字符”匹配的表达式,注意区分大小写,大写是相反的意思。

同样的我将标准字符集合列举下


标准字符代表的含义
\d任意一个数字,0~9 中的任意一个
\w任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
\s包括空格、制表符、换行符等空白字符的其中任意一个
.小数点可以匹配任意一个字符(除了换行符),如果要匹配包括“\n”在内的所有字符,一般用[\s\S]

同样我在这里拿 \d 和 \D 来测试,如下:



再次重复一遍,注意区分大小写,大写是相反的意思。其它几个请大家自己测试 一遍,在这里就不一一测试了。

最后讲下自定义字符集合,它是用中括号“ [ ] ”匹配方式,能够匹配中括号中的任意字符。在这里列举简单的自定义字符

集合。


自定义字符代表的含义
匹配 "f"、"i"、"s"、"h"、"c"、"6"、"@"
[^fishc]匹配 "f"、"i"、"s"、"h"、"c" 之外的任意一个字符
匹配 c~f 之间任意一个字符
[^C-F0-6]匹配 C~F 和 0~6 之外的任意一个字符


同样还是拿例子来说明,我在这里用 [^fishc] 来测试,如下:



注意两者的区别,其它几个请大家自己测试 一遍,在这里就不一一测试了。

下一节我给大家讲下自定义字符的一些特殊用法 —— 量词、贪婪与非贪婪模式。

【Java正则表达式】01. 量词、贪婪与非贪婪模式

~风介~ 发表于 2017-2-7 23:49:54

为什么不是类和对象?多线程与并发也行啊~{:10_250:}

零度非安全 发表于 2017-2-7 23:59:12

~风介~ 发表于 2017-2-7 23:49
为什么不是类和对象?多线程与并发也行啊~

多线程还早哈,这个放在 JDBC 后面讲{:10_284:}

~风介~ 发表于 2017-2-8 10:18:11

零度非安全 发表于 2017-2-7 23:59
多线程还早哈,这个放在 JDBC 后面讲

坐等楼主更新......{:7_139:}

Max.馬 发表于 2017-2-13 11:40:32

学习分享!!!

零度非安全 发表于 2017-2-13 11:51:21

Max.馬 发表于 2017-2-13 11:40
学习分享!!!

欢迎 Max.馬 同学!!!{:10_275:}

林子军 发表于 2017-8-7 10:52:31

111

熊宝宝要当红军 发表于 2019-10-6 15:03:23

楼主楼主,为什么我的结果区没有显示东西呢?
页: [1]
查看完整版本: 【Java正则表达式】00. 简单介绍及普通、标准、自定义字符集合