正则表达式
是要定义吗,看百科上的定义:
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
/后边的是修正符
其中i是不区分大小写
修正符很有用的
例子:
<?php
//标记在整个模式之外;
例://$mode="/\bis\b/U",其中U在外面;
//修正符:i 不区分大小写的匹配;
//如:"/abc/i"可以与abc或aBC或ABc等匹配;
//修正符:m 将字符串视为多行,不管是那行都能匹配;
例://模式为:$mode="/abc/m";
//要匹配的字符串为:$str="bcefg5e
abcdfe"
//注意其中
,换行了;abc换到了下一行;
//$str和$mode仍可以匹配,修正符m使得多行也可匹配;
//修正符:s 将字符串视为单行,换行符作为普通字符;
例://模式为:$mode="/pr.y/";
//要匹配字符串为:$str="pr
y";
//两者不可匹配; . 是除了换行以外的字符可匹配;
//修改下模式为:$mode="/pr.y/s";
//其中修正符s将
视为普通字符,即不是换行;
//最后两者可以匹配;
//修正符:x 将模式中的空白忽略;
//修正符:A 强制从目标字符串开头匹配;
例://$mode="/abc/A";
//可以与$str="abcsdfi"匹配,
//不可以与$str2="sdsdabc"匹配;
//因为$str2不是以abc开头;
//修正符:D 如果使用$限制结尾字符,则不允许结尾有换行;
例://模式为:$mode="/abc$/";
//可以与最后有换行的$str="adshabc
"匹配;
//元子符$会忽略最后的换行
;
//如果模式为:$mode="/abc/D",
//则不能与$str="adshabc
"匹配,
//修正符D限制其不可有换行;必需以abc结尾;
//修正符:U 只匹配最近的一个字符串;不重复匹配;
例:
如模式为:
$mode="/a.*c/";
$str="abcabbbcabbbbbc" ;
preg_match($mode,$str,$content);
echo $content[0]; //输出:abcabbbcabbbbbc;
//如果$mode="/a.*c/";变成$mode="/a.*c/U";
// 则只匹配最近一个字符串,输出:abc;
//修正符:e 配合函数preg_replace()使用,
可以把匹配来的字符串当作正则表达式执行;
?>
.点 匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。
$ 匹配行结束符。例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾 但是不能匹配字符串"They are a bunch of weasels."
^ 匹配一行的开始。例如正则表达式^When in能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"
* 匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
\ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符。
[ ] [c1-c2] [^c1-c2] 匹配括号中的任何一个字符。例如正则表达式r[aou]t匹配rat、rot和rut,但是不匹配ret。可以在括号中使用连字符-来指定字符的区间,例如正则表达式[0-9]可以匹配任何数字字符;还可以制定多个区间,例如正则表达式[A-Za-z]可以匹配任何大小写字母。另一个重要的用法是“排除”,要想匹配除了指定区间之外的字符——也就是所谓的补集——在左边的括号和第一个字符之间使用^字符,例如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。
\< \> 匹配词(word)的开始(\<)和结束(\>)。例如正则表达式\<the能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:这个元字符不是所有的软件都支持的。
\( \) 将 \( 和 \) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
| 将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
+ 匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。
? 匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
\{i\} \{i,j\} 匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]\{3\} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]\{4,6\} 匹配连续的任意4个、5个或者6个数字字符。注意:这个元字符不是所有的软件都支持的。
来自 http://baike.baidu.com/view/94238.htm?fr=ala0_1
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
(?<= # 断言要匹配的文本的前缀
<(\w+)> # 查找尖括号括起来的字母或数字(即HTML/XML标签)
) # 前缀结束
.* # 匹配任意文本
(?= # 断言要匹配的文本的后缀
<\/\1> # 查找尖括号括起来的内容:前面是一个"/",后面是先前捕获的标签
) # 后缀结束
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
\a 报警字符(打印它的效果是电脑嘀一声)
\b 通常是单词分界位置,但如果在字符类里使用代表退格
\t 制表符,Tab
\r 回车
\v 竖向制表符
\f 换页符
\n 换行符
\e Escape
\0nn ASCII代码中八进制代码为nn的字符
\xnn ASCII代码中十六进制代码为nn的字符
\unnnn Unicode代码中十六进制代码为nnnn的字符
\cN ASCII控制字符。比如\cC代表Ctrl+C
\A 字符串开头(类似^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾(不受处理多行选项的影响)
\z 字符串结尾(类似$,但不受处理多行选项的影响)
\G 当前搜索的开头
\p{name} Unicode中命名为name的字符类,例如\p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp) 平衡组
(?im-nsx:exp) 在子表达式exp中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes) 同上,只是使用空表达式作为no
(?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes) 同上,只是使用空表达式作为no
http://deerchao.net/tutorials/regex/regex.htm
正则表达式 (.*) .* 就是这2种写法,有什么却别?分别代表什么含义?_百度...
把正则表达式的一部分放在圆括号内,你可以将它们形成“组”,表达式的处理引擎会把括号内的处理结果记下来,并给他编号(分别为\\1,\\2...)。然后你可以对这个结果(即“组”)使用一些正则操作,例如重复操作符。事实上,当用“()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号...
若a是int型变量,则下列表达式的值为___。
26 括号表达式的值等于最后一个算术的值即等于a+6,而a=4*5 =20,a+6=26 若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_ 26 此表达式(a=4*5,a*2)的值为40,a=4*5是赋值语句 ,a=20 若a是int型变量,则表达式(a=4*5,a--,++a),a+6的值为___ 首先a=4*5,...
正则表达式(.*?)是什么意思
?是惰性匹配,就是匹配尽可能少的次数。.*?的意思是匹配任意字符,尽可能少的次数。比如:abaaaaabb 用 a.*b去匹配,会匹配到abaaaaabb 全部,应为正则默认贪婪匹配,找到第一个b之后,发现后面还有b,会一直匹配下去。所以 可以使用贪婪匹配,a.*?b 这样的话, 只会匹配尽可能少的次数 ...
正则则表达式中可以匹配任意一个字符的表达式有哪些?
很多表达式可以匹配任意字符如 [\\S\\s] 表示空格或非空格, 那就是任意字符了 还有一个点 . 在单行模式下表示除了回车以外的任意字符, 在多行模式表示任意字符.还有 [\\W\\w] 这种跟[\\S\\s] 一样, 它表示任意可以组成词的字符和不能组成词的字符 一般这些正则关键字, 大写表示和小写相反...
匹配正则表达式[0-9]{4}\\-?[A-Z]+[a-z]*un的字符串有?(不定项)_百度...
n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。var agetest=\/^(\\d{1,3})$\/;0,01,12,123,354,38,2等。正则表达式性质:正则表达式又称规则表达式,计算机科学...
正则表达式里的?:是啥意思例如(?:a|b)
这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。.+?表示最小匹配 举例说明.+?与.+的区别 如果用<.+>匹配,则匹配结果是 如果用<.+?>匹配,则匹配结果是 也就是.+?只要匹配就返回了,不...
正则表达式
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\\n' 或 '\\r' 之后的位置。匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\\n' 或 '\\r' 之前的位置。匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo...
如何使用正则表达式
有关正则表达式的话题是非常丰富,而且复杂的,用Java来实现也非常广泛,则需要对regex包进行的彻底研究,我们在这里所讲的只是冰山一角。即使你对正则表达式比较陌生,使用regex包后会很快发现它强大功能和可伸缩性。如果你是个来自Perl或其他语言王国的老练的正则表达式的黑客,使用过regex包后,你将会安心地投入到java的世...
c语言表达式(x++*1\/3)的值是几?
设有int x=11;,则表达式(x++*1\/3)的值是3。当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x++*1\/3)相当于(11*1\/3),取整后为3。
若有以下定义,则计算表达式y+=y-=m*=y后的y值———。
从左往右分解,y+=y-=m*=y 就是 y=y+(y-=m*=y)y-=m*=y 就是 y=y-(m*=y)m*=y 就是 m=m*y 那么就等于 m=m*y; \/\/m=10, y=2 y=y-m; \/\/m=10, y=-8 y=y+y; \/\/m=10, y=-16 y应该为-16
翟农全威: 正则表达式,就是用某种模式去匹配一类字符串的一个公式. 正则表达式由一些普通字符和一些元字符(metacharacters)组成.普通字符包括大小写的字母和数字,而元字符则具有特殊的含义 如: *表明+前的字符可以没有或者出现任意多次 +表明+前的字符至少出现一次 \s表明空格、换行、回车、tab等 ()表明一个组,group的意思 \"这里的\其实是转义符 |表明或者 \S 与\s是相反的意思,也就是除了\s以外的字符
郾城区15138745512: 正则表达式是什么? - ?
翟农全威: 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等.由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.正则表达式很强大但是很繁琐,学会了非常有用,关键在多练习.
郾城区15138745512: 正则表达式 !\\^\\.\\*\\$!([^!]+)! 是什么意思 - ?
翟农全威: 在java中要进行转义,所以转化成标准正则表达式后就是“ !\^\.\*\$!([^!]+)!” 正则表达式中\^ 表示就是^的本身的意思,\. \$ ,同理得知;所以最后你的表达式表示!^.$! 开头后面跟任意非!的字符串重复一次到无穷次,然后以!结束.例如:1321312!^.$! 123!123123. 如果想让字符串只能是!^.$! 123! ,两边没有其他字符的, 那么在你正则的首加上^尾加上$.
郾城区15138745512: 什么是正则表达式 - ?
翟农全威: 一个正则表达式,就是用某种模式去匹配一类字符串的一个公式. 用于特定的字符格式检测: 详见: http://baike.baidu.com/view/94238.htm
郾城区15138745512: 正则表达式\\[[^\\]]+\\]"是表示什么? - ?
翟农全威:[答案] 匹配含: \ 表示转义 \\:在字符串中表示一个 \ [^\\]:除了\外的任意字符 [] :其中之一 + :至少出现一次 ] :匹配 ] 把以上的串起来就是匹配:"\"+"任意非\的字符至少一次" +"\"+"]" 例如可以匹配: "\abcede\]"
郾城区15138745512: 正则表达式是什么意思 - ?
翟农全威: 正则表达式是搜索、替换和解析复杂字符模式的一种强大而标准的方法.如果你曾经在其他语言(如Perl)中使用过它,他们的语法非常相似,那么你仅仅阅读一下re模块的摘要,大致了解其中可用的函数和参数就可以了.字符串也有很多方法...
郾城区15138745512: 正则表达式 - ?
翟农全威: 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen.
郾城区15138745512: 什么是正则表达式??
翟农全威: 算法的...(蛮难的),下面只是网上入门级的,参考一下 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. ...
郾城区15138745512: 什么是正则表达式?举例说明一下 - ?
翟农全威: 目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子. 正则表达式的使用,可以通过简单的办法来实现强大的功能....