大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

正则表明式的应用,轻巧讲讲关孙铎则表明式的

来源:http://www.dfwstonefabricators.com 作者:编程应用 人气:199 发布时间:2019-10-08
摘要:大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。 大家好,我是IT修真院深圳分院的学员,一枚正直纯洁善良的JAVA程序员。本次为大家带来关于正则表达式的入门

大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。

大家好,我是IT修真院深圳分院的学员,一枚正直纯洁善良的JAVA程序员。本次为大家带来关于正则表达式的入门。

今天给大家分享一下,修真院官网JAVA任务3中,深度思考部分的知识点——正则表达式

1.背景介绍

一、背景介绍

发明BSD、TCP/IP、csh、vi和NFS的SUN首席科学家Bill Joy说过,在计算机体系结构领域里,缓存是唯一称得上伟大的思想的。其他的一切发明和技术不过是在不同场景下应用这一思想而已。在计算机软件领域里,情形也大体相似。如果罗列这个领域的伟大发明,绝对不超过二十项。这些包括分组交换网络、WEB、lisp、哈希算法、UNIX、编译技术、关系模型、面向对象、XML这些大名鼎鼎的家伙,而正则表达式绝对不应该被漏掉。

如今正则表达式已经成为几乎所有语言中的必备元素:JAVA、Perl、Python、PHP、Ruby————我们要问的不是什么语言支持正则表达式,而是什么语言不支持正则表达式。而一些功能强大的编辑器如notepad++、sublime 、Atom也全都支持正则表达式。正则表达式究竟能干什么呢?为什么会有那么大的魅力?我们往下看

关于历史

二、知识剖析

元字符:起匹配、标记作用的特殊字符

匹配:将符合的结果返回,相当于return ...

标记:将符合的结果作为条件,相遇if

"b" 标记的单词的开头和结尾,即是空格、逗号、句号等符号

"d" 匹配的是[0-9]的任一个数字

"{}" "X{3}"表示匹配连续的3个X

“.” 匹配的是除了换行符“n”的任意一个字符

"*" "X*"可以表示0个或无数个X

“s” 表示匹配一个空格

"S" 表示匹配一个不是空格的任意字符

零宽断言(标记类型,不返回结果)

“X”如果X后面跟着check,则匹配X()

(?<=check) "(?<=check)X"如果X前面有check,则匹配X

注:check可以是任何你写的出的东西

正则表达式一开始是研究人类神经系统工作原理的专家提出的概念,后来正则表达式被引入到计算搜索算法的早期研究中,然后又经过程序圈几十年的发展与迭代,到现在正则表达式已经成为程序语言中不可分割的一部分。如果你是一位接触计算机语言的工作者,那么你会在主流操作系统(*nix[Linux,Unix等]、Windows、HP、BeOS等)、主流的开发语言(delphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、Javascript、Ruby以及Python等)、数以亿万计的各种应用软件中,都可以看到正则表达式优美的舞姿。我们甚至可以说,现在几乎所有的编程语言都支持正则表达式,只是因为语言的不同而略有差异。

三、常见问题

1.读不懂,也不想读正则表达式怎么办?

2.正则表达式的标准并不统一,JAVA上能用的Python并不一定能用,怎么办?

关于正则表达式

四、解决方案

1.读不懂,也不想读正则表达式怎么办?

普通人有三件东西看不懂:医生的处方,道士的鬼符,程序员的正则表达式

哪怕是一个精通正则表达式的人要读懂一大段正则表达式也很费力,因为正则表达式是只写的(write-only)。很多时候,写完三分钟,立马就不读懂了

但是——非要读不可的话,可以使用可视化工具

刚才演示用的神器————RegexBuddy

2.正则表达式的标准并不统一,JAVA上能用的Python并不一定能用,怎么办?

神器regexBuddy再次出场!具有不同语言间的正则表达式互相转换功能,甚至还能帮你直接把实现正则表达式的代码写出来!

正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE).

五、编码实战

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

六、扩展思考

通俗的讲就是按照某种规则去匹配符合条件的字符串,而正则表达式定义的就是匹配规则。

七、参考文献

1.博客

2.《精通正则表达式》

2.知识剖析

八、更多讨论

详见视频:视频链接

undefined_腾讯视频

PPT链接:

感谢大家观看

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

我的邀请码:13299900,或者你可以直接点击此链接:

元字符

(* + ? $ ^ . | { } [ ])

字符类

w 匹配任何单字符 [a-zA-Z0-9]

W 匹配任何单字符以外的字符

d 匹配任何单数字[0-9]

D 匹配所有数字之外的字符

s 匹配任何Unicode空白符

S 匹配任何Unicode空白符之外的字符

[...] 匹配任何方括号之内的字符

[^...] 匹配任何方括号之外的字符

修饰符

1、g:global全文搜索,不添加,搜索到第一个匹配停止;

2、i:ignore case忽略大小写,默认大小写敏感;

3、m:multiple lines多行搜索。

重复:量词

?:出现零次或一次;

+:出现一次或多次;

*:出现零次或多次;

{n}:出现n次;

{n,m}:出现n到m次;

{n,}:至少出现n次。

反义 :[^]

分组:使用()可以达到分组的功能,使用量词作用于分组

字符转义:使用可以达到字符转义的功能

分枝条件:使用|可以达到分支的功能,约等于java里面的或者

贪婪与懒惰:在量词后面加上?会变成非贪婪模式.

后向引用

零宽断言

负向零宽断言

处理选项

平衡组/递归匹配

关于正则表达式引擎

正则引擎主要可以分为两大类:一种是DFA,一种是NFA。这两种引擎都有了很久的历史,当中也由这两种引擎产生了很多变体!于是POSIX的出台规避了不必要变体的继续产生。这样一来,主流的正则引擎又分为3类:一、DFA,二、传统型NFA,三、POSIX NFA。

3.常见问题

1.读不懂正则表达式怎么办?

2.正则表达式在java中如何运用。

4.解决方案

1.读不懂正则表达式怎么办?正则表达式可视化工具:

正则表达式可视化工具:

一般来说,正则表达式只是用来写的,基本上写完,完成预期的功能后,作者就已经不知道该怎么读自己写的正则表达式了。

2.正则表达式在java中如何运用。

java.util.regex 包主要包括以下三个类:

Pattern 类:

pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher 类:

Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher对象。

PatternSyntaxException:

PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

5.编码实战

6.扩展思考

正则表达式这么强,我们应该怎么用?

上帝的归上帝,正则的归正则,分工明确。

7.参考文献

链接:

链接:

8.更多讨论

1.正则表达式在linux的shell脚本中有哪些命令可以使用?

sed命令.awk命令和grep命令都可以使用正则表达式。

2.怎么是用这个东西显示的,什么网页?

关于正则表达式的可视化工具:

3.使用正则判断输入的邮箱符合格式是否正确。

\w+([+.-]\w+)*@\w+*\[^nrx85u2028u2029]\w+*

PPT链接:戳这里看PPT

腾讯视频:腾讯视频

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧

直接点击此链接:

本文由大发体育娱乐在线发布于编程应用,转载请注明出处:正则表明式的应用,轻巧讲讲关孙铎则表明式的

关键词:

上一篇:RMI底层实现原理,Java学习随笔

下一篇:没有了

最火资讯