b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

正则表达式(1)---语法说明

电脑杂谈  发布时间:2020-05-25 06:23:15  来源:网络整理

正则表达式语法/_perl 正则表达式 语法_act正则表达式语法

正则表达式(1)---语法说明

正则表达式(2)---匹配规则

正则表达式(3)---运算符优先级

正则表达式(4)----常用的正则表达式

由于工作和业务原因,我接触了在不确定的文本中查找指定字符的标准. 在使用Java无效并且百度失败之后,我决定自己编写正则表达式. 最后,他被殴打得很厉害. 为了找回脸,他弥补了正则表达式. 在查阅了相关材料并查看了Daniel在Github上编写的一些正则表达式之后,我终于学到了一些东西. 乐于分享,记录下整个学习过程并与Zhujun分享.

附上我干儿子的照片(男孩越来越圆了)

你爱我的叔叔阿姨吗

正则表达式的“祖先”可以追溯到有关人类神经系统如何工作的早期研究. 两位神经生理学家Warren McCulloch和Walter Pitts开发了一种描述这些神经网络的数学方法.

1956年,基于McCulloch和Pitts的早期工作,数学家Stephen Kleene发表了一篇题为“神经网络事件的表示”的论文,其中介绍了正则表达式的概念. 正则表达式用于描述他所谓的“正则集代数”,因此使用了“正则表达式”一词.

后来,人们发现这项工作可以用于使用Ken Thompson的计算搜索算法的一些早期研究中,Ken Thompson是Unix的主要发明者. 正则表达式的第一个实际应用是Unix中的qed编辑器.

正如他们所说,其余的都是众所周知的历史. 从那时起,正则表达式已成为基于文本的编辑器和搜索工具的重要组成部分.

目前,正则表达式已在许多软件中广泛使用,包括* nix(Linux,Unix等),HP和其他操作系统,PHP,C#,Java和其他开发环境以及许多应用程序,可以看到正则表达式的阴影. 但是,由于房东使用JAVA,因此这里的重点是为了理解JAVA(其他语言也是如此,正则表达式可以普遍使用)

最后,我们结束了礼貌的用语并开始输入主题. 首先,我们学习正则表达式的语法. 这里我们以房东遇到的问题为例. 这个需求是

从HTML文件中找到标题和图片并显示.

让我们少说话,先发布HTML文档.

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>干儿子</title>
</head>
<body>
<img src="https://upload-images.jianshu.io/upload_images/2326194-ece9cfbfd1fa569a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240">
<p>干儿子的照片</p>
</body>
</html>

这里的人觉得这很有趣,只需直接检查标题和img. 但是,在一个非常复杂的HTML界面中,用JAVA检查标题和img是不够的,甚至某些文本也会带来title和img,这将产生很大的影响.

以下内容对于初学者来说有点困难,无需记住它,以下各章将进行相应的说明,并且有一个图片.

正则表达式是由普通字符(例如字符a至z)和特殊字符(称为“元字符”)组成的文本模式. 该模式描述了一个或多个在搜索文本时要匹配的字符串. 正则表达式用作将字符模式与搜索到的字符串匹配的模板. 由于元字符后面会有详细的解释,因此我们在这里不再赘述.

普通字符包括所有未明确指定为元字符的可打印和不可打印字符. 其中包括所有大写A〜Z和小写字母a〜z,所有数字0〜9,所有标点符号和一些其他符号.

不可打印字符也可以是正则表达式的一部分. 下表列出了非打印字符的转义序列:

字符描述

匹配x指示的控制字符. 例如,\ cM匹配Control-M或回车符. x的值必须是A-Z或a-z中的一个. 否则,将c视为文字“ c”字符. (不常用)

perl 正则表达式 语法_正则表达式语法/_act正则表达式语法

匹配换页. 等效于\ x0c和\ cL.

匹配换行符. 等效于\ x0a和\ cJ.

匹配回车符. 等效于\ x0d和\ cM.

匹配任何空白字符,包括空格,制表符,换页符等. 等效于[\ f \ n \ r \ t \ v].

匹配所有非空白字符. 等效于[^ \ f \ n \ r \ t \ v].

匹配一个制表符. 等效于\ x09和\ cI.

匹配垂直标签. 等效于\ x0b和\ cK.

您无需花时间记住,只需使用几次.

所谓的特殊字符是指具有特殊含义的字符. 例如,*代表所有字符. 如果要搜索,则需要用\ *表示.

许多元字符在尝试匹配它们时需要特殊对待. 要匹配这些特殊字符,您必须首先“转义”这些字符,即在其前面加上反斜杠字符(\). 下表列出了正则表达式中的特殊字符:

特殊字符描述

匹配输入字符串的结束位置. 如果设置了RegExp对象的Multiline属性,则

也匹配

字符本身,使用$.

标记子表达式的开始和结束. 可以获取子表达式以备后用. 要匹配这些字符,请使用(和).

匹配前面的子表达式零次或多次. 要匹配*字符,请使用*.

匹配前面的子表达式一次或多次. 要匹配+字符,请使用+.

匹配换行符\ n以外的任何单个字符. 要匹配,请使用\.

标记方括号表达式的开头. 要匹配[,请使用\ [.

匹配前一个子表达式零次或一次,或指定一个非贪婪的限定词. 要匹配吗?字符,请使用\?.

将下一个字符标记为特殊字符,文字字符或反引号或八进制转义字符. 例如,“ n”与字符“ n”匹配. '\ n'匹配换行符. 序列'\\'匹配“ \”,而'\('匹配“(”.

匹配输入字符串的开头,除非用于方括号表达式中,否则表示不接受字符集. 要匹配^字符本身,请使用\ ^.

标记限定符表达式的开头. 要匹配{,请使用\ {.

指定两个项目之间的选择. 要匹配|,请使用\ |.

act正则表达式语法_正则表达式语法/_perl 正则表达式 语法

The

限定符用于指定正则表达式的给定组件必须出现多少次匹配. 有6种类型,包括*或+或?或{n}或{n,}或{n,m}.

正则表达式限定词为:

字符描述

匹配前面的子表达式零次或多次. 例如,zo *可以匹配“ z”和“ zoo”. *相当于{0,}.

匹配前面的子表达式一次或多次. 例如,“ zo +”可以匹配“ zo”和“ zoo”,但不能匹配“ z”. +等同于{1,}.

匹配前一个子表达式零次或一次. 例如,“做(es)?”可以在“ do”或“ does”中匹配“ do”. ?等效于{0,1}.

n是一个非负整数. 确定匹配n次. 例如,“ o {2}”不能与“鲍勃”中的“ o”匹配,但可以与“食物”中的两个o匹配.

n是一个非负整数. 至少匹配n次. 例如,“ o {2,}”不能与“ Bob”中的“ o”匹配,但可以与“ foooood”中的所有o匹配. 'o {1,}'等同于'o +'. 'o {0,}'等同于'o *'.

{n,m}

m和n是非负整数,其中n <= m. 至少匹配n次,最多匹配m次. 例如,“ o {1,3}”将与“ fooooood”中的前三个o匹配. 'o {0,1}'等同于'o?'. 请注意,逗号和两个数字之间不能有空格.

使用定位器可以将正则表达式固定到行的开头或结尾. 它们还使您能够创建出现在单词中,单词开头或单词结尾的正则表达式.

The

定位符用于描述字符串或单词的边界,^和$表示字符串的开头和结尾,\ b描述单词的前边界或后边界,\ B表示非单词边界

正则表达式限定词为:

字符描述

匹配输入字符串的开头. 如果设置了RegExp对象的Multiline属性,则^也将匹配\ n或\ r之后的位置.

匹配输入字符串的结尾. 如果设置了RegExp对象的Multiline属性,则$也将匹配\ n或\ r之前的位置.

匹配单词边界,即单词和空格之间的位置.

非单词边界匹配.

注意: 不能将限定符与锚点一起使用. 由于在换行符或单词边界之前或之后不能有一个以上的位置,因此不允许使用诸如^ *之类的表达式.

字符描述

将下一个字符标记为特殊字符,文字字符,后向引用或八进制转义字符. 例如,“ n”与字符“ n”匹配. '\ n'匹配换行符. 序列'\'匹配“”,“(”匹配“(”.

匹配输入字符串的开头. 如果设置了RegExp对象的Multiline属性正则表达式语法/,则^也将匹配'\ n'或'\ r'之后的位置.

perl 正则表达式 语法_正则表达式语法/_act正则表达式语法

匹配输入字符串的结束位置. 如果设置了RegExp对象的Multiline属性,则$也将匹配'\ n'或'\ r'之前的位置.

匹配前面的子表达式零次或多次. 例如,zo *可以匹配“ z”和“ zoo”. *相当于{0,}.

匹配前面的子表达式一次或多次. 例如,“ zo +”可以匹配“ zo”和“ zoo”,但不能匹配“ z”. +等同于{1,}.

匹配前一个子表达式零次或一次. 例如,“做(es)?”可以在“ do”或“ does”中匹配“ do”. ?等效于{0,1}.

n是一个非负整数. 确定匹配n次. 例如,“ o {2}”不能与“鲍勃”中的“ o”匹配,但可以与“食物”中的两个o匹配.

n是一个非负整数. 至少匹配n次. 例如,“ o {2,}”不能与“ Bob”中的“ o”匹配,但可以与“ foooood”中的所有o匹配. 'o {1,}'等同于'o +'. 'o {0,}'等同于'o *'.

{n,m}

m和n是非负整数,其中n <= m. 至少匹配n次,最多匹配m次. 例如,“ o {1,3}”将与“ fooooood”中的前三个o匹配. 'o {0,1}'等同于'o?'. 请注意,逗号和两个数字之间不能有空格.

当字符紧跟任何其他限定符(*,+,?,{n},{n,},{n,m})时,匹配模式为非贪婪. 非贪婪模式尽可能少地匹配搜索到的字符串,而默认贪婪模式则尽可能地匹配搜索到的字符串. 例如,对于字符串“ oooo”,“ o +?”将匹配单个“ o”,而“ o +”将匹配所有“ o”.

匹配除“ \ n”以外的任何单个字符. 要匹配包括'\ n'在内的任何字符,请使用'[. \ N]'.

(模式)

匹配模式并获得此匹配. 可以从生成的Matches集合中获得获得的匹配项,SubMatches集合用于VBScript中,而在JScript中使用

0…

9个属性. 要匹配括号字符,请使用'('或')'.

(?:模式)

匹配模式,但没有获得匹配结果,这意味着这是一个没有得到的匹配,不会被存储以备后用. 当使用“或”字符(|)组合模式的各个部分时,这很有用. 例如,“ indust(?: Y | ies)比“ industrial”更简单. 行业.

(?=模式)

正向查找,在与pattern匹配的任何字符串的开头匹配搜索字符串. 这是非获取性匹配,这意味着无需获取匹配以供以后使用. 例如,“ Windows(?= 95 | 98 | NT | 2000)”可以匹配“ Windows 2000”中的“ Windows”,但不能匹配“ Windows 3.1”中的“ Windows”. 预检查不占用字符,也就是说,在匹配发生后,对下一个匹配的搜索将在最后一次匹配之后立即开始,而不是在包含预检查的字符之后开始.

(?!模式)

否定预览,在与模式不匹配的任何字符串的开头匹配搜索字符串. 这是非获取性匹配,这意味着无需获取匹配以供以后使用. 例如,“ Windows(?!95 | 98 | NT | 2000)”可以匹配“ Windows 3.1”中的“ Windows”,但不能匹配“ Windows 2000”中的“ Windows”. 预检查不占用字符,也就是说,在匹配发生后,对下一个匹配的搜索将在最后一次匹配之后立即开始,而不是在包含预检查的字符之后开始.

匹配x或y. 例如,'z |食物”可以匹配“ z”或“食物”. '(z | f)ood'匹配“ zood”或“ food”.

[xyz]

字符集. 匹配包含的任何字符. 例如,“ [abc]”可以匹配“普通”中的“ a”.

[^ xyz]

act正则表达式语法_perl 正则表达式 语法_正则表达式语法/

负字符集. 匹配任何不包含的字符. 例如正则表达式语法/,“ [^ abc]”可以匹配“普通”中的“ p”.

[a-z]

字符范围. 匹配指定范围内的任何字符. 例如,“ [a-z]”可以匹配“ a”到“ z”范围内的任何小写字母.

[^ a-z]

负字符范围. 匹配不在指定范围内的任何字符. 例如,“ [^ a-z]”可以匹配不在“ a”到“ z”范围内的任何字符.

匹配单词边界,即单词和空格之间的位置. 例如,“ er \ b”可以与“从不”中的“ er”匹配,而不能与“动词”中的“ er”匹配.

匹配非单词边界. “ er \ B”可以与“动词”中的“ er”匹配,但不能与“从不”中的“ er”匹配.

匹配x指示的控制字符. 例如,\ cM匹配Control-M或回车符. x的值必须是A-Z或a-z中的一个. 否则,将c视为原义的“ c”字符.

匹配数字字符. 相当于[0-9].

匹配一个非数字字符. 等效于[^ 0-9].

匹配换页. 等效于\ x0c和\ cL.

匹配换行符. 等效于\ x0a和\ cJ.

匹配回车符. 等效于\ x0d和\ cM.

匹配任何空白字符,包括空格,制表符,换页符等. 等效于[\ f \ n \ r \ t \ v].

匹配所有非空白字符. 等效于[^ \ f \ n \ r \ t \ v].

匹配一个制表符. 等效于\ x09和\ cI.

匹配垂直标签. 等效于\ x0b和\ cK.

匹配任何单词字符,包括下划线. 等同于“ [A-Za-z0-9 _]”.

匹配所有非单词字符. 等效于“ [^ A-Za-z0-9 _]”.

匹配n,其中n是十六进制转义值. 十六进制转义值必须为两位数. 例如,“ \ x41”匹配“ A”. '\ x041'等效于'\ x04'和“ 1”. 您可以在正则表达式中使用ASCII编码.

匹配num,其中num是一个正整数. 对获得的匹配的引用. 例如,'(. )\ 1'匹配两个连续的相同字符.

标识八进制转义值或向后引用. 如果在\ n之前至少有n个子表达式,则n是向后引用. 否则,如果n是八进制数字(0-7),则n是八进制转义值.

标识八进制转义值或向后引用. 如果\ nm之前至少有nm子例程,则nm是向后引用. 如果在\ nm之前至少有n个采集,则n是向后引用,后跟文本m. 如果不满足上述条件,则如果n和m均为八进制数字(0-7),\ nm将匹配八进制转义值nm.

如果n是八进制数字(0-3),并且m和l都是八进制数字(0-7),则匹配八进制转义值nml.

匹配n,其中n是由四个十六进制数字表示的Unicode字符. 例如,\ u00A9与版权符号(?)相匹配.

然后回到最初的问题,我们需要检查标题和img相关数据,然后让我们首先分析功能需求.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-221398-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 唐潇涵
        唐潇涵

        战前北洋水师已经十年没有更新舰艇了

      热点图片
      拼命载入中...