php正则表达式概述

合集下载

php正则表达式

php正则表达式

php正则表达式php正则表达式是一种用于从字符串中提取特定元素的技巧。

它使用称为表达式的规则系统来匹配字符串中的元素,并从中提取出满足条件的信息,是一个非常有用的工具。

PHP正则表达式可以用来检查和替换字符串中的特定文本块,或提取字符串中特定部分的信息。

正则表达式会以特殊的语法规则查看目的字符串,并根据所用的正则表达式语法,返回提取的信息。

PHP使用正则表达式语言来解析正则表达式,并剖析字符串中的文本块,从而可以提取出特定文本或搜索匹配字符串特定文本内容。

使用PHP正则表达式可以节省大量的时间和精力,它可以很容易地在字符串中找到所需的文本,或者替换字符串中特定文本。

正则表达式在PHP编程中广泛使用,被用于从字符串中获取需要的信息,验证表单输入的有效性,替换目标字符串,检查给定字符串是否包含特定字符串,以及搜索字符串中的特定字符串。

PHP一共提供了三个正则表达式函数,分别是preg_match()、preg_match_all()和preg_replace(),每个函数都是用来解析正则表达式的。

preg_match()函数用于匹配字符串中的模式,preg_match_all()函数用于匹配能够匹配所有字符串中模式的子字符串,而preg_replace()函数则用于替换字符串中的模式或所有模式。

除了这三个正则表达式函数,PHP还提供了一些正则表达式帮助函数。

例如preg_quote()函数,它可以将字符串中的非字母字符和空格转义(替换)为可用于正则表达式的可见字符,从而可以保证正则表达式语句能够正常工作。

此外,还有preg_grep()函数,它可以用于在字符串数组中进行搜索,从而返回匹配模式的索引数组,以及preg_split()函数,它可以将字符串拆分为数组,根据指定的模式进行拆分。

正则表达式是PHP编程中一个非常重要的工具,它可以通过PHP 函数对字符串进行搜索和替换,提取特定的文本块,以及检查字符串的有效性,使得PHP程序开发的效率大大提高。

PHP常用正则表达式

PHP常用正则表达式

PHP常⽤正则表达式PHP代码$str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link">\2</span>\3', $str);其中⽤了三个⼦模式(每个圆括号中内容为⼀个⼦模式),第⼀个是链接开始标签,第⼆个是链接⽂本,第三个是</a>然后第⼆个参数中\1、\2、\3就表⽰这三个部分,要替换成什么样⼦还不简单?获取页⾯中的所有链接地址的PHP函数下⾯这个⽤PHP写的函数,可以获取任意的字符串$string中的所有链接地址($string可以是从⼀个HTML页⾯⽂件直接读取出来的字符串),结果保存在⼀个数组中返回.该函数⾃动把电⼦邮件地址排除在外,⽽且返回的数组中不会有重复元素.function GetAllLink($string){$string = str_replace("\r","",$string);$string = str_replace("\n","",$string);$regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)";$regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";//去掉标签之间的⽂字$string = eregi_replace(">[^<>]+<","><", $string);//去掉JAVASCRIPT代码$string = eregi_replace("<!--.*//-->","", $string);//去掉⾮<a>的HTML标签$string = eregi_replace("<[^a][^<>]*>","", $string);//去掉EMAIL链接$string = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[email])([\"']*)[^>]*>","", $string);//替换需要的⽹页链接$string = eregi_replace("<a([ ]+)href=([\"']*)($regex[url])([\"']*)[^>]*>","\\3\t", $string);$output[0] = strtok($string, "\t");while(($temp = strtok("\t"))){if($temp && !in_array($temp, $output))$output[++$i] = $temp;}return $output;}以下是以PHP的语法所写的⽰例验证字符串是否只含数字与英⽂,字符串长度并在4~16个字符之间<?php$str = 'a1234';if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {echo "验证成功";} else {echo "验证失敗";}?>简易的台湾⾝分证字号验证<?php$str = 'a1234';if (preg_match("^(?:\d{15}|\d{18})$", $str)) {echo "验证成功";} else {echo "验证失敗";}>匹配中⽂字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)匹配空⽩⾏的正则表达式:\n\s*\r评注:可以⽤来删除空⽩⾏匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒匹配⾸尾空⽩字符的正则表达式:^\s*|\s*$评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*评注:表单验证时很实⽤匹配⽹址URL的正则表达式:[a-zA-z]+://[^\s]*评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实⽤匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}评注:匹配形式如 0511-******* 或 021-********匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]\d{5}(?!\d)评注:中国邮政编码为6位数字匹配⾝份证:\d{15}|\d{18}评注:中国的⾝份证为15位或18位匹配ip地址:\d+\.\d+\.\d+\.\d+评注:提取ip地址时有⽤匹配特定数字:^[1-9]\d*$ //匹配正整数^-[1-9]\d*$ //匹配负整数^-?[1-9]\d*$ //匹配整数^[1-9]\d*|0$ //匹配⾮负整数(正整数 + 0)^-[1-9]\d*|0$ //匹配⾮正整数(负整数 + 0)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配⾮负浮点数(正浮点数 + 0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配⾮正浮点数(负浮点数 + 0)评注:处理⼤量数据时有⽤,具体应⽤时注意修正匹配特定字符串:^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串^\w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串下⾯是⼀些特殊字符:正则表达式中的特殊字符:(学习参考书-<<精通正则表达式>>)字符意义:对于字符,通常表⽰按字⾯意义,指出接着的字符为特殊字符,不作解释。

php正则表达式函数使用2

php正则表达式函数使用2
PREG_SPLIT_NO_EMPTY preg_split()只能返回非空的成分。
PREG_SPLIT_DELIM_CAPTURE 定界符模式中得括号表达式也会被捕捉返回。
PREG_SPLIT_OFFSET_CAPTURE对每个出现的匹配结果也同时返回其附属的字符串偏移量。
字符串处理函数
preg_replace_callback()
preg_prelace(模式,字符串,替换字符串,可选参数替换次数)字符串查找替换,此函数有一个专门为他提供的修正模式“e”,也只有preg_replace()函数使用此修正符,如果设置此修正符,函数在替换字符串的时间将对字符串中逆向引用做正常的替换,将其作为php代码求值。并用做其结果来替换所搜索的字符串。要确保第二个参数构成一个合法的php代码字符串,否则报告中包含preg_replace()的行中出现的语法解析错误。
preg_split()字符串分割,本函数返回第一个字符串数组,数组元素包含通过第二个参数subject中得字符串,井底个参数的正则表达式pattern,作为匹配费边界分隔的字符串,如果第三个参数limit,则最多返回limit个字符串。而其最后一个元素包含了subject中剩余的所有部分。乳沟limit为-1,则意味着没有限制。还可以用来继续只等第四个可选参数flags,其中flags可以是下了标记的任意组合。
preg_match_all()
此函数与perg_match函数相似不同的是perg_match函数在第一次匹配之后就会停止搜索,而parg_match_all则不会,他会一直匹配到字符串的结尾才结束搜索。
preg_quote()
$str="ab+cd=ef{g";

PHP函数preg_replace()正则替换所有符合条件的字符串

PHP函数preg_replace()正则替换所有符合条件的字符串

PHP函数preg_replace()正则替换所有符合条件的字符串PHP preg_replace() 正则替换,与JavaScript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。

preg_replace (正则表达式, 替换成, 字符串, 最⼤替换次数【默认-1,⽆数次】, 替换次数)⼤部分语⾔的正则表达式都是差不多的,不过也有细微的差异。

PHP 正则表达式正则字符正则解释\将下⼀个字符标记为⼀个特殊字符、或⼀个原义字符、或⼀个向后引⽤、或⼀个⼋进制转义符。

例如,“\n”匹配字符“n”。

“\\n”匹配⼀个换⾏符。

序列“\\”匹配“\”⽽“\(”则匹配“(”。

^匹配输⼊字符串的开始位置。

如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。

$匹配输⼊字符串的结束位置。

如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。

*匹配前⾯的⼦表达式零次或多次。

例如,zo*能匹配“z”以及“zoo”。

*等价于{0,}。

+匹配前⾯的⼦表达式⼀次或多次。

例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。

+等价于{1,}。

匹配前⾯的⼦表达式零次或⼀次。

例如,“do(es)?”可以匹配“does”或“does”中的“do”。

?等价于{0,1}。

{n}n是⼀个⾮负整数。

匹配确定的n次。

例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。

{n,}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。

php explode 正则 -回复

php explode 正则 -回复

php explode 正则-回复PHP中的explode函数是一个非常强大且常用的字符串处理函数。

它允许我们通过指定一个分隔符,将一个字符串分割成多个部分,并返回一个数组。

然而,在某些情况下,我们可能需要更加复杂的分割规则,这时我们就可以结合使用explode和正则表达式来实现更高级的字符串分割操作。

正则表达式是一种用来匹配和处理字符串的强大工具。

它的特点是灵活且功能强大,它使用一种特殊的语法来描述字符串的模式。

在PHP中,我们可以使用preg_split函数来根据正则表达式分割字符串,从而实现更加复杂的字符串分割。

下面我们将以中括号内的内容为主题,一步一步来回答关于PHP explode 和正则表达式的问题,帮助读者更好地理解和运用这两个功能。

首先,让我们先来了解一下explode函数的基本用法。

explode函数可以接收两个参数,第一个参数是分隔符,第二个参数是待分割的字符串。

它会将字符串按照指定的分隔符进行分割,并返回一个数组。

我们可以使用foreach循环来遍历这个数组,逐个输出分割后的结果。

phpstr = "apple,banana,orange";fruits = explode(",", str);foreach (fruits as fruit) {echo fruit . " ";}输出结果为:apple banana orange在这个例子中,我们使用逗号作为分隔符,将字符串str分割成了三个部分,分别是apple、banana和orange。

然后我们使用foreach循环遍历数组fruits,并通过echo语句输出每个水果。

然而,有时候我们的需求可能会更复杂,我们可能需要按照更加特定的规则来分割字符串。

这时,我们就可以结合使用explode和正则表达式。

正则表达式是由特殊字符和普通字符组成的字符串,它可以用来匹配和处理各种不同的字符串。

PHP中的正则表过式

PHP中的正则表过式

正则表达式整理邹义良邮箱:it9981@微博:/it266论坛:定义:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

使用原则:可以使用字符串函数完成的功能,优先选择函数,复杂的操作,才选用正则表过式。

需要和函数一起使用,才能发挥出正则表达式的作用。

(分割、匹配、查找、替换…)php中提供两套正则表达式函数库:1.POSIX扩展正则表达式函数(ereg_开头)2.Perl兼容正则表达式函数(preg_开头) 推荐学习和使用正则表达式模式如何编写语法:1.定界符号2.原子3.元字符4.模式修正符号测试代码<?php$regex='/[^0-9a-zA-Z]/';$str='1aA#';echo '表达式:<b>'.$regex.'</b>&nbsp;&nbsp;';echo '字符串:<b>'.$str.'</b>&nbsp;&nbsp;';if(preg_match($regex,$str)){echo '<font color="green">匹配成功</font>';}else{echo '<font color="red">匹配失败</font>';}?>定界符:起始和结束的符号。

除了字母、数字和反斜线(\)以外的任何字符,都可以为定界符。

// || {} !! ……没有特殊需要,都使用//作为定界符定界符之间,是原子、元字符,字界符外边,是模式修正符。

有的语言中,可以没有定界符原子:是正则表达式的最基本组成单位,必须至少包含一个原子。

只要在正则表达式中,可以单独使用的字符,都是原子。

php 正则匹配写法

php 正则匹配写法

php 正则匹配写法在 PHP 中,你可以使用正则表达式进行模式匹配。

下面是一些常见的正则表达式匹配的写法示例:1. 匹配文本中的数字:```php$pattern = "/\d+/";if (preg_match($pattern, $text, $matches)) {echo "匹配到的数字是: " . $matches[0];} else {echo "未找到匹配的数字";}```2. 匹配电子邮件地址:```php$pattern = "/^\w+([-+.]\w+)\w+([-.]\w+)\.\w+([-.]\w+)$/";if (preg_match($pattern, $email, $matches)) {echo "匹配到的电子邮件地址是: " . $matches[0];} else {echo "未找到匹配的电子邮件地址";}```3. 匹配 URL:```php$pattern = "/^(httphttps):\/\/[^\s]+$/";if (preg_match($pattern, $url, $matches)) {echo "匹配到的 URL 是: " . $matches[0];} else {echo "未找到匹配的 URL";}```这些示例中的正则表达式只是简单的示例,你可以根据自己的需求进行修改和扩展。

在编写正则表达式时,可以使用各种特殊字符和元字符来定义模式。

你可以参考 PHP 官方文档中关于正则表达式的部分,以获取更多详细信息和示例。

-400~20000 正则表达式

-400~20000 正则表达式

标题:深入探讨正则表达式的应用和原理正则表达式是一种强大的字符串匹配和处理工具,在计算机编程和文本处理领域有着广泛的应用。

从最基本的匹配操作到复杂的模式识别,正则表达式都能发挥其作用。

本文将深入探讨正则表达式的应用和原理,帮助读者更好地理解和使用正则表达式。

一、正则表达式的概念和基本语法正则表达式是一种描述字符串模式的表达式,它可以用来匹配、搜索和替换文本中的特定模式。

在正则表达式中,一些特殊的符号和字符组合被用来表示字符串的模式,例如字符集合、重复次数、位置匹配等。

基本的正则表达式语法包括字符类、重复、位置匹配等元素。

二、正则表达式的匹配原理正则表达式的匹配原理是基于有限自动机理论和形式语言理论的基础上实现的。

在实际的匹配过程中,正则表达式引擎会将文本和模式分别转化为字符序列和状态序列,然后通过状态转移的方式进行匹配。

正则表达式的匹配原理涉及到有限自动机的状态转移、正则表达式的编译和优化等方面。

三、正则表达式在文本处理中的应用正则表达式在文本处理中有着广泛的应用,如文本搜索、替换、分割、提取等。

通过对正则表达式的灵活运用,可以快速高效地实现各种文本处理操作。

在实际的开发工作中,正则表达式常常被用于日志分析、数据抽取、格式化输出等方面。

四、正则表达式在编程中的应用在编程中,正则表达式也是一种重要的工具,它可以帮助程序员处理和转换字符串,实现复杂的模式匹配和文本操作。

许多编程语言都提供了对正则表达式的支持,如JavaScript、Python、Java等。

程序员可以利用正则表达式来简化代码逻辑、提高开发效率。

五、正则表达式的性能优化和注意事项在实际的应用中,正则表达式的性能和效率也是需要重点关注的问题。

一些复杂的正则表达式模式可能会导致匹配过程的性能下降,甚至出现回溯等问题。

为了提高正则表达式的性能,可以采取一些优化手段,如避免过度回溯、减少不必要的捕获组等。

在使用正则表达式时还需要注意一些常见的陷阱和错误,如贪婪匹配、字符转义等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

^[]和[^ ]的区别
• 你也可以把你不想要得字符列在中括号里,你只 需要在总括号里面使用'^' 作为开头 "%[^a-zAZ]%" 匹配含有两个百分号里面有一个非字母的 字符串. • 要点:^用在中括号开头的时候,就表示排除括号里 的字符 • 不要忘记在中括号里面的字符是这条规路的例外 —在中括号里面, 所有的特殊字符,包括(''), 都 将失去他们的特殊性质 "[*\+?{}.]"匹配含有这 些字符的字符串.
圆括号()
1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。 2.圆括号用法I:对字符或元字符进行分组,这样在圆括号内就可以对字 符组合使用限定符。 匹配A+一个数字+A+一个数字:(A\d){2} 3.圆括号用法II:表示可选择性。 3.1 从两个直接量中选择一个 gr(a|e)y匹配gray和grey,该例子还可以使用gr[ae]y,字符类效率 更高。 3.2 从多个直接量中选择 (Doctor|Dr\.?)匹配Doctor,Dr,Dr.三种情况 3.3 错误匹配的交替行为, 使用交替行为时,有时会出现意想不到的错误。 用(a|ab)匹配ab时,只能匹配a,但是如果用(ab|a),则可以匹配ab
例题test.php
• • • • • • • • • • • • • • • • • <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <style> h1{ color:#F00;} b{color:#00f;} </style> <?php $string = $_GET['pattern']; $email=$string; if(ereg ("^[a-zA-Z][0-9a-zA-Z_]{1,4}@[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$",$email)) { echo "<font >"."<b><h1>{$string}</h1></b><b>email格式正确</b>!!"."<font>"; } else{ echo "<font >"."电子邮件地址<b><h1>{$string}</h1></b>不正确!!"."<font>"; }
―或”符号
• 句点和方括号只匹配单个字符,如果要匹配多个字符就要 看”或”运算符了 • 如果除了上面匹配的所有单词之外,你还想要匹配 “toon‖,那么,你可以使用“|‖操作符。“|‖操作符的 基本意义就是“或”运算。要匹配“toon‖,使用 “t(a|e|i|o|oo)n‖正则表达式。这里不能使用方扩号, 因为方括号只允许匹配单个字符;这里必须使用圆括号 “()‖。圆括号还可以用来分组,具体请参见后面介绍。
从邮件验证说起
• • • • 邮件的格式: sun@ 其中sun是用户名,是服务器名 用户名只能由英文字母a~z(不区分大小写)、数字0~9 、下划线组成。 • 用户名的起始字符必须是英文字母.如:netease_2005 • 用户名长度为5~20个字符。 • 服务器名只能由英文字母a~z(不区分大小写)、数字0~ 9、下划线及点组成,@后点前面长度限制为1-10个字符, 点后面的限制为com,cn,,net。
正则表达式本质
一、正则表达式也是一个字符串 二、由具有特殊意义的字符组成的字符串 三、具有一点编写规则,也是一种模式 四、看作是一种编程语言(是用一些特殊字符,按规则编写 出一个字符串,形成一种模式---正则表达式)
• 注意: 如果正则表达式,不和函数一起使用,则它就是 一个字符串,如果将正则表达式放到到某个函数中使用, 才能发挥出正则表达式的作用。 • * * 在PHP中给我们提供两套正则表达式函数库 • POSIX 扩展正则表达式函数(ereg_) • Perl 兼容正则表达式函数(preg_)
从邮件验证说起
• • • • 先写用户名的正则表达式 ^[a-zA-Z][0-9a-zA-Z_]{1,} 再写主机名的正则表达式 [0-9a-zAZ_]{1,10}(\.)(com|cn||net)$ • 再把前后拼起来则为: • ^[a-zA-Z][0-9a-zA-Z_]{1,}@[0-9a-zAZ_]{1,10}(\.)(com|cn||net)$
方括号符号

句点优点是通用,同时缺点也是通用 为了解决句点符号匹配范围过于广泛这一问题,你可以在 方括号(“[]‖)里面指定看来有意义的字符。此时,只 有方括号里面指定的字符才参与匹配。也就是说,正则表 达式“t[aeio]n‖只匹配“tan‖、“Ten‖、“tin‖ 匹配单个字符 .方括号表示可能出现的单个字符
Lamp-正则表达式
网络技术系 施艳昭
正则表达式,有两方面需要学习:
• 一、正则表达式的模式如何编写 主要是语法规则 • 二、学习正则表达式的强大处理函数
正则简介
• 目前,正则表达式已经在很多软件中得到广泛的 应用,包括*nix(Linux, Unix等),HP等操作 系统,PHP,C#,Java等开发环境,以及很多 的应用软件中,都可以看到正则表达式的影子。 • • 正则表达式也称为一种模式表达式。通过构建具 有特定规则的模式,与输入的字符信息比较。再 进行分割、匹配、查找、替换等工作 。 • "/\<img\s*src=\".*?\"\/\>/"
{}
你也可以在大括号里面限制字符出现的个数,比如 • "ah{2}": 要求a后面一定要跟两个h(一个也不 能少)("ahh"); • "ah{2,}": 要求a后面一定要有两个或者两个以 上h(如"ahh", "ahhhh", 等.); • "ah{3,5}": 要求a后面可以有3-5个h("ahhh", "ahhhh", or "ahhhhh").
^ 和 $
• 看到前面的邮件验证大部分人可能会感到头痛,别急下面我 们慢慢分解 • ^ 和 $ 他们是分别用来匹配字符串的开始和结束,下面法 举例说明 • "^The": 开头一定要有"The"字符串; • "of despair$": 结尾一定要有"of despair" 的字符串; 那 么, • "^abc$": 就是要求以abc开头和以abc结尾的字符串,实 际上是只有abc匹配 • "notice": 匹配包含notice的字符串 你可以看见如果你没有 用我们提到的两个字符(最后一个例子),就是说 模式( 正则表达式) 可以出现在被检验字符串的任何地方,你没 有把他锁定到两边 (开始或结束)
'*', '+',和 '?',
'*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者 顺序. 他们分别表示: * 表示出现0次或1次或多次 相当于{0,}, + 表示出现1次或多次 相当于{1,}, ? 表示出现0次或1次 相当于{0,1}, 这里是一些例子: • "ab*": 和ab{0,}同义,匹配以a开头,后面可以接0个或者 N个b组成的字符串("a", "ab", "abbb", 等); • "ab+": 和ab{1,}同义,同上条一样,但最少要有一个b存 在 ("ab", "abbb", 等.); • "ab?":和ab{0,1}同义,可以没有或者只有一个b; • "a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾 的字符串. 要点, '*', '+',和 '?'只管它前面那个字符.
• 正确的是:
图:匹配所有123-12-1234形式的社会安全号码
实例2
• 假设进行搜索的时候,你希望连字符号可以出现,也可以 不出现——即,999-99-9999和999999999都属于正 确的格式。这时,你可以在连字符号后面加上一个数量限 定符号,如图所示:
正则表达式的历史

正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作 的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理 学家研究出一种数学方式来描述这些神经网络。 • 1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法 ”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称 为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。 • 随后,发现可以将这一工作应用于使用 Ken Thompson 的计算 搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人 。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。 如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则 表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
'.'
• 一个点('.')可以代表所有的单一字符,不包括"\n" • 如果,要匹配包括"\n"在内的所有单个字符,怎么 办? • 用'[\n.]'这种模式. • "a.[0-9]": 一个a加一个字符再加一个0到9的数 字 • ".{3}$": 三个任意字符结尾 .
相关文档
最新文档