鱼C论坛

 找回密码
 立即注册
查看: 6948|回复: 7

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

[复制链接]
发表于 2017-2-7 21:17:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

正则表达式(Regular Expression)

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

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

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

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

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

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

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

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

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

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

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

RegexBuddy.rar (1.65 MB, 下载次数: 361)

RegexBuddy.png 一个猫头鹰的图标

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

软件的主界面:

match.png

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

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

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

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

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

0.png

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

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

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

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

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

d.png dd.png

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

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

集合。

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


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

g.png gg.png

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

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

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

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
小小小小xx + 1 + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-7 23:49:54 | 显示全部楼层
为什么不是类和对象?多线程与并发也行啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-7 23:59:12 | 显示全部楼层
~风介~ 发表于 2017-2-7 23:49
为什么不是类和对象?多线程与并发也行啊~

多线程还早哈,这个放在 JDBC 后面讲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-8 10:18:11 | 显示全部楼层
零度非安全 发表于 2017-2-7 23:59
多线程还早哈,这个放在 JDBC 后面讲

坐等楼主更新......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-13 11:40:32 | 显示全部楼层
学习分享!!!

评分

参与人数 1鱼币 +5 收起 理由
零度非安全 + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-13 11:51:21 | 显示全部楼层
Max.馬 发表于 2017-2-13 11:40
学习分享!!!

欢迎 Max.馬 同学!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-7 10:52:31 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-6 15:03:23 | 显示全部楼层
楼主楼主,为什么我的结果区没有显示东西呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 02:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表