正则表达式零基础学习

来源:互联网 发布:下载淘宝网2017新版本 编辑:程序博客网 时间:2024/04/29 15:17

我学习正则表达式 大概用了 一个下午,准备让你们 两个小时学会。

 如果 是计算机毕业的 学过正则文法,机器语言的。并且上课好好听的作业没有抄袭别人的。学习正则基础篇的 估计用不了两个小时。耐心的写几个。 估计就没啥问题了。

这次 直说 基础学习。不说 什么概念。基础学会了 感觉有意思了 在看看《精通正则表达式(第三版)》.(美) 网上有pdf的。或者自己百度百度 谷歌谷歌。深入的学习。不说了开始吧。 == 主要针对零基础的。有基础的就算了。

[0-9] 是个区间 就跟 高三数学里面的 区间[0-9] 一样 只是 他表示的都是 Z*  正整数 (我学完 JS 正则 之后 就感觉 万事万物都是想通的);

* 是个元字符   零个或者多个  就是 用数学的 就是 0到正无穷多个

+ 是个元字符  一个或者多个  数学里面是 1到正无穷 

.是个元字符   代表任意东西

[] 里面 可以是枚举 比如  我只需要 124  就可以这样写  [124]  如果你是连续的  比如  12345678 可以写为 [1-8]; - 表示 是个区间      这个就是个军火库 你想要什么 里面你就放什么 

[^] 取反  就像 二进制的 ^1 一样 取非 

{} 是个区间符号  正则里面的区间  {1,3} 表示  数学的区间就是 [1,3]; 都是闭区间,{x,} 表示  x到正无穷 包含X X 代表正整数,{10} 就是代表  一定要有10个;

现在写一个 1234567890 的 正则表达式  条件 就是 一个 10位的 正整数  可以这样写  [0-9]{10}; 数字的位数 不确定   可能一个数字都没有  [0-9]*,至少 只有一个 [0-9]+ 或者 [0-9]{1,};

格式化一个时间吧  比如 现在比较流行的 时间 格式  2015.2.2  现在 你必须格式化成 这样样子  没有学正则之前 你肯定想的  用 DateFormat  去格式化  直接  yyyy.M.d 这样子  但是 你这样字格式化如果 是  2015.12.12  就会格式化  成 2015.2.2 ,明显 是不对的 。其实 换个思考 你也替换下  你先应该可以写出来的是 用  testStr.replaceAll(".0", "");

这样 你会发现 会有问题   因为 .可以 跟任何的字符匹配  这个时候 你需要转义  \\. 就会转移成 真正的.  转义的知识 跟所有的程序中转义都是一样的。

应该写成  testStr.replaceAll("\\.0", ""); 就OK了 。


以上就是规则 跟。基础的 并没有讲? 涉及到问号 之后  就会有 懒惰模式 跟贪婪模式 只别  先把基础的看会吧  再去看这个吧。

留几个作业吧, 这东西 要多用 我是看了一个下午 但是 我给自己布置作业写了两天。 开发中碰见的问题 尽量自己用正则解决 一个月就差不多了。

字符串 2015-12-10 09:33:00.0   只保留年月日   使用正则。  \\s(\\d{2}:){2}\\d{2}\\.\\d$  这个是答案  但是你看不懂。 这些 你要是都没有学会 就不要查 这个正则是咋写出来的  

还有一个就是匹配 IP 地址的  比如  192.168.1.1 自己想想 IP 地址的规则 写吧,正则 没有什么 简繁之称  自己能看懂,别人能看懂。能解决问题 就是好正则。 这不是我说的。《精通正则表达式(第三版)》的作者说的。

这些都写完之后  可以写写时间的  考虑 间隔符  年月日  - . 闰年  二月   30天的 31天的  用上面的知识都是可以完成的 

 感悟吧  写正则就是想  庖丁解牛  你要看到他的骨架 而不是真身。想想都是什么构成的 规则是什么  最多的可能出现的场景。 然后 一一去匹配他。自己学会之后 写正则会上瘾的。 

还有就是 我不打算写进阶 高级篇  网上 已经很多 资料了  挺简单的。没时间的话 也不用看《精通正则表达式(第三版)》 这个书  我就是无意间看到了  就像一个酒鬼看见一个新酒 想上去喝两口 一样的道理。(语文从来没有及格过)









0 0
原创粉丝点击