正则表达式的介绍(正则表达式),学习和改进的元字符(特殊字符)

正则表达式的介绍(正则表达式),学习和改进的元字符(特殊字符)
正则表达式是什么

正则表达式,又称为正常表达和正则表达式(英语:正则表达式,通常称为正则表达式,表达式或者重新)的代码,是计算机科学的一个概念,一个正则表达式使用一个字符串来描述和匹配一个字符串的,符合一定的语法规则的字符串,它几乎各种计算机编程语言是有用的,它可以分为规则的正则表达式,扩展的正则表达式,和高级正则表达式。常见的正则表达式中常用的Linux shell,和高级正则表达式的语法规范基本上是从Perl。常见的编程语言(PHP、Perl、Python、java、C #)支持高级正则表达式。

为什么我们要学习正则表达式

的高级编程语言的正则表达式几乎都是由Perl语言,所以语法几乎是相同的。你学习,正则表达式语言,它几乎可以在所有的编程语言使用。似的,我知道的SQL语法,后端MySQL和MSSQL几乎是普遍的。这是还有一个原因,我们需要学习正则表达式的通用性。另一个原因是:强大的文本匹配函数的正则表达式。很多文本匹配处理,如果没有正则表达式,真的很难做。例如:从一个字符串的字符串,读取电话号码格式,如果我们使用一个字符串的查找,你需要做一个循环,你需要写一个判断。据估计,它需要很多F代码和时间来开发。如果使用正则表达式,可以完成一行代码。匹配所有对:HTML标记,如果我们这样做,我们发现处理级别和匹配标签非常复杂。一般人可能不能在短时间内完成。如果使用正则表达式,估计数分钟。

正则表达式字符串格式

现在我们知道正则表达式的重要性,一般性。因此我们可以理解普通格式。正则正则表达式由一个由普通字符+特殊字符(字符)组成的字符串组成。AB是通用字符。◎D表示0-9数字,+ 1个字符前面的字符。哈哈,看起来真的很简单!

正则表达式是普通的或扩展的或高级的正则表达式,不同的可能在特殊字符上有所不同。许多特殊字符可以组合成一组新的匹配规则。这里说的不是太深。我们通常只知道它的普通元字符。基本正则表达式可以写出。

下面是Javascript正则表达式的常见元字符:
性格
描述


下一个字符被标记为一个特殊字符,或文字字符,或向后引用、或一个八进制转义字符。例如,'n'matches字符。匹配一个换行符。序列的匹配和是(
^
输入字符串的开始位置匹配。如果RegExp对象的Multiline属性设置,该^匹配后的位置或。
美元
输入字符串的结束位置匹配。如果RegExp对象的Multiline属性设置,美元也将位置之前的或。
*
匹配前面的子表达式零或更多。例如,ZO *可以匹配Z和动物园。相当于{ 0 }。
+
匹配前面的子表达式一次或多次。例如,'zo +匹配Zo和动物园+相当于{ 1 }。
匹配前面的子表达式零次或一次。例如,做(ES)可以匹配做做或,它相当于{0,1}。
{ }
n是一个非负整数。匹配确定的n次。例如,‘{ 2 }不匹配O在鲍勃
{ }
n是一个非负整数。匹配至少n倍。例如,‘{ 2 } 'cannot匹配鲍勃O‘{ 1,}就等于O。{ 0 }哦,相当于啊。
{,}
m和n是非负整数,n = m n次<<比赛至少符合M次最多。刘,O 3 } { 将在fooooood比赛第一三O,O {0,1}是相当于O。请注意有逗号和两个数字之间没有空格。
当角色是由任何其他限制(*,+,{ },{ },{ N,N,M }),模式匹配是不贪,非贪婪模式匹配搜索字符串尽可能小,而默认的贪婪模式匹配搜索字符串尽可能。例如,字符串哦

匹配除以外的任何单个字符匹配任何字符,包括'',使用类似{的模式。}。
(模式)
匹配模式,得到了这场比赛。获得的比赛可以从生成的比赛得到的,利用设置在VBscript submatches,用0美元在Jscript。9美元的财产。匹配的括号使用(或)。
(::模式)
匹配模式但没有得到匹配的结果,那就是,它是一种非接触的比赛,不是存储供以后使用。在使用或字符(|)各部分相结合的模式是非常有用的。例如,工业(:Y | IES)是一个简洁的表达比行业|行业。
(=模式)
提出了prelook,匹配在匹配模式的任何字符串的开始查找字符串。这是一个非获取匹配,即匹配不需要用于将来使用。例如,Windows(= 95 | 98 | NT | 2000)可以匹配窗口在Windows 2000预检查不消费特征,也就是说,发生的一场比赛后,下一场比赛是最后一场比赛后立即开始,而不是从预先检查特征。
(!模式)!
负预查找匹配的任何负面先行开始任何搜索字符串匹配点的搜索字符串的一个地方。这是一个非获取匹配,即匹配不需要用于将来使用。例如,'windows(!95 | 98 | NT | 2000)可以匹配窗口Windows 3.1预检查不消费特征,也就是说,发生的一场比赛后,下一场比赛是最后一场比赛后立即开始,而不是从预先检查特征。
X | Y
赛X或Y为例,Z | food'can匹配Z或食物,(Z | F)设计比赛zood 或食物。
{某}
一组字符。匹配所包含的任何字符。例如,{ }可以匹配中的A。
{某某}
一系列负面特征。匹配任意字符,不包括在内。例如,{ }^ ABC可以匹配the'p'in平原。
{到}
字符范围。匹配指定范围内的任何字符。例如,{ }可以匹配任何字母小写字母字符AZ。
{ ^ A-Z }
负字符范围。匹配任意字符,不在规定的范围内。例如,{ ^ A-Z }可以匹配任何字符,不在范围内的'A'到'Z'。
◎B
单词的边界是匹配的,也就是单词和空格之间的位置。例如,ER可以在从不中匹配ER。
◎B
匹配非单词边界。年 b'can赛儿动词
◎CX
匹配指定的X.例如控制字符,厘米匹配一个control-m或回车。x的值必须是一个字母或a-z.otherwise,C是一个原始的C字。
◎D
匹配一个数字字符,它相当于{ 0-9 }。
◎D
匹配一个非数字字符,它相当于^ 0-9 } {。
F
匹配一个进纸。它相当于 x0c和CL
匹配一个换行符,它相当于 x0a和 CJ。
R
匹配一个回车符,相当于 x0d和厘米。

匹配任何空白字符,包括空格、制表符、换页符等。它相当于{ F


匹配任何非空白字符。。
◎T
匹配一个制表符,相当于 x09和 CI。
V
匹配一个垂直制表符,它相当于 x0b和CK。
◎W
匹配任何字符,包括下划线。它相当于{ }a-za-z0-9_。
◎W
匹配任何非单词字符。这相当于{ }^ a-za-z0-9_。
Xn
匹配n,其中n是116进制转义码。十六位小数的值必须是一个确定的两个数。例如, X41比赛, x041等同于 X041 。ASCII编码可用于正则表达式的。

匹配数字,在这里数字是一个正整数。对所得到的匹配的引用。例如,(。)‘1'匹配两个连续的相同字符。
标识一个八进制逃逸值或一个向后引用。如果至少得到表达式之前,N是一个落后的参考。否则,如果n是八进制数(0-7),那么n是一个八进制转义码。
M
标识八进制转义值或向后引用。如果至少在前面有至少一个NM之前已获得m,NM是一个向后引用。m,n是一个落后的参考跟文本M.如果前面的条件不满意,如果N和M是八进制数(0-7),然后m将匹配八进制转义值NM。
毫升
如果n是八进制数(0-3),和M和L是八进制数(0-7),八进制转义值和匹配。
◎联合国
匹配n,其中n是一个Unicode字符是四位的十进制数字来表示。例如, u00a9火柴版权符号()。
从以上的元字符,我们看到很多的元字符可以代表一组普通人物。所以,我们要配合一些字符串和正则表达式往往有很多种,例如:匹配0-9的数字,可以使用{ 0-9 }, D,{ 0123456789 },所以3种都可以,条路穿过罗马,好让正则表达式类更好,更多的性能,更快的匹配速度通过10万个周期匹配,发现有几个几乎没有差异。 D的速度比{ }和{ 0-9 0-9更快,比{ 0123456789 }。 D是最简单的正则表达式的水平}。使用时,我们尝试匹配的字符集的字符尽可能简化和快速!

你怎么写正则表达式

我们编写正则表达式,从分析匹配字符串的性质开始,然后逐步增补其他字符,普通字符,从左到右匹配。

例如:我们必须匹配一个移动电话号码。

1。分析字符串的字符,电话号码是一个数字,它从1, 11位长开始。

2。可以写1 1开始,随后也可:0-9 1 { }

三.数字长度为11位,增加1 D { 10 },后面的数字11个字符,也可以是:0-9 1 { } { 10 };{ }内的数字,表示它可以重复的字符数的左边

4。所有字符必须是11,因此头和尾必须直接满足条件,所以可以是:1 10 { } { $ }。

例如:我们匹配QQ号码。

1。分析QQ号的特征是,数字至少是5位数,第一个字符不是0,最大长度,而当前为11位。

2。第一个字符可以定义为第一个,第一个字符是1到9,后面的字符是字符。

三.以下字符数是4到10位{ 1-9 } D {性}

4。所有字符串必须匹配,因为他们可以写为:^ { 1-9 } D {性}

例如:匹配IP地址

1。IP的结构分析是0-255的每个部分和中间。总共有4段。

2。首先我们写下第一个0-255,可分解为0-9的个位数,10-99两位数,100-199三位数,三位数250-255 200-249二,第四节。

{ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 } 25 { 0 } |说|或计算的优先级最低,双方可以多元字符普通字符的组合字符串作为一个整体。

三.这样的字符,中间有三个重复,所以结果是:

{ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } | 。,因为它是一个点的性格,是一个元字符,和所有需要逃走了。这不,我们发现有的问题,|最低优先级,它将持续。字符表,为组合:25 { 0 }。因此,应该在前面几例,后面跟着一个字符,是正确的:({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。为满足要求,我们会发现,每一个()的性格,其实是一次比赛,和内容出现在匹配结果。这里我们添加()的目标是优先计算,因此不需要对内部的子匹配的内容。我们可以忽略比赛内容:分角色,结果将是:({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。

4。节已经匹配,然后我们需要重复三次,这样我们可以直接重复最后一次表达3次。

方法:(:{ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。

方法二:第一段为一组,重复3次(({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |){ 3 }。),然后也不管子匹配结果,可以打开成:

(:({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |){ 3 }。)哈哈,看到这种表情,是不是很晕,事实上,一个长的表达是从一个小小的补充。这使用,重复的次数,将简化的结果。

5。最后一个0-255的比赛

((::{ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 2 | 0-9 25 { 0 } } |)。({ 3 } { }):0-9 | { } { } | 1-9 0-9 0-9 1 { } { 2 } { 0 } { 2 | 0-9 25 { } } | 0-5),这是在后面一个0-255,然后,再在上面加限定词,变成:^(({ } { } 0-9 | 1-9:{ 1 } { 0-9 0-9 | } { 2 } { 0 } { 2 | 0-9 25 { })} | 0-5。){ 3 }({ } { } { 1-9 | 0-9 0-9 1 { } | 0-9 } { 2 } { 0 } { 0-9 2 | | { 0 })} 25。

下面的图是读取文本中的所有IP地址。
其中(=)是一个正匹配,搜索左字符串,在比赛成功后,字符串的右边必须满足比赛的成功!
好了,写出这些例子,发现一个呼吸可以从一个非常简单的正则表达式与如此长的表达式相匹配。它是否感觉模糊,但很长的正则表达式是从简单正则表达式中获得的并不奇怪,一步一步地欢迎讨论和交流!
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部