正则表达式好难懂,求高人指点,怎么学?有什么好的理解方法没有?看到那一串符号,晕了。。。

作者&投稿:卢费 (若有异议请与网页底部的电邮联系)
正则表达式 的用法怎么用.. 请高手们指点一下.最好有个实例看.~

需要好好研究研究,看看这些实例。

re.search(r'(?<=\[003\]).+(?=产品描述)',s)

1、入门简介
简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。
正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。
  举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。
2、基本语法
在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。
正则表达式的形式一般如下:
/love/
其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
较为常用的元字符包括: “+”, “*”,以及 “?”。其中,“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次,“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次,而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。
下面,就让我们来看一下正则表达式元字符的具体应用。
/fo+/
因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。
/eg*/
因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。
/Wil?/
因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者 “Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。
除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。例如,
/jim{2,6}/
上述正则表达式规定字符m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。
在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。
\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符。
(说明:我们可以把\s和\S以及\w和\W看作互为逆运算)
下面,我们就通过实例看一下如何在正则表达式中使用上述元字符。
/\s+/
上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。
/\d000/
如果我们手中有一份复杂的财务报表,那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。
除了我们以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。
较为常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。其中,“^”定位符规定匹配模式必须出现在目标字符串的开头,“$”定位符规定匹配模式必须出现在目标对象的结尾,\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一,而“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。同样,我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说:
/^hell/
因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 “hell”, “hello”或 “hellhound”开头的字符串相匹配。
/ar$/
因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。
/\bbom/
因为上述正则表达式模式以“\b”定位符开头,所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。
/man\b/
因为上述正则表达式模式以“\b”定位符结尾,所以可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。
为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如:
/[A-Z]/
上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/
上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/
上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/
上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中。因此,上述正则表达式将无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。
如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 “|”。例如:
/to|too|2/
上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。
正则表达式中还有一个较为常用的运算符,即否定符 “[^]”。与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。例如:
/[^A-C]/
上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。一般来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符。
最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”。例如:
/Th\*/
上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。
3、使用实例
①PHP中可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下:
 
以下为引用的内容:
  ereg(pattern, string)
  其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下:
< ?php
   if (ereg(“^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+”,$email)){
echo “Your email address is correct!”;}
   else{
echo “Please try again!”;
}
?>

http://www.newxing.com/regex/
这篇教程认真看完你就入门了。


什么时候最大或最小,难懂要写表达式?,只用说思路就行
A是啥?

电影开始5分钟了,5种表达式是什么
故事的开始,故事的导火索,介绍故事的缘由。现在的电影五分钟不能说很多,现在的电视剧也是,三十集的可以啰嗦成五十集

高中课程好难懂啊,哪位可以帮我说一下好的学习方法~~~???
其次是要善于总结归类,寻找不同的题型、不同的知识点之间的共性和联系,把学过的知识系统化。举个具体的例子:高一代数的函数部分,我们学习了指数函数、对数函数、幂函数、三角函数等好几种不同类型的函数。但是把它们对比着总结一下,你就会发现无论哪种函数,我们需要掌握的都是它的表达式、图象形状...

单片机程序状态字PSW的OV位到底是怎么判断溢出的?有CY位不就够了么...
单片机程序状态字PSW的OV位是溢出标志,当进行算数运算时,如果产生溢出,则硬件将OV置1,否则清0。执行有符号加、减法指令的时候,当D6位有向D7位的进位或借位时C6Y=1时,而D7位没有向CY位的进位或借位C7Y=0时,OV=1或C6Y=0,C7Y=,1时,则OV=1。溢出的逻辑表达式:OV=C6Y⊕C7Y。CY位...

怎么用VBS写一个判断大小的程序?(谢谢您的回答)
怎么样, 麻烦吧, 还是select好吧. OK, 今天到此结束, 总结一下: 要点: 1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数 2) bool变量的值只有两种:true,false 2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true 3) if 语句的格式...

c需要中关系运算符和表达式,a>(b>c),a!=(c==d)怎么解释??
没有必要解释,毫无意义的东西,自己开发程序的时候基本就不会去造成这种晦涩难懂的用法。

英语语法该如何学习?
对于很多人来说,英语语法都是一个很难过的坎儿,不仅仅因为英语语法本身就很枯燥,而且还很艰涩难懂。市面上有很多的语法学习资料,如果单纯自学的话,其实是很难在短期时间看到效果的,所以,如何学好英语语法,其实最理想的方式应该是找一家专业的英语培训机构,通过专业的师资指导与专业的课程练习,从而...

...这道选择为什么B。最好详细分析,语言别太难懂
static 和 全局量,会保持上次的结果。k++ 在表达式中用 k, 出了表达式 自增1。p=f(k,m);第一次调用:全局k=4, 主函数m=1, 传入子程序 a=4,b=1;i=2+0+4=6;k=k+1=5;m=6+4+1=11; 送回 打印 11 --- 第2次调用:全局k=5, 主函数m=1, 传入子程序 a=5, b=1;i ...

数学科学家的故事
陈景润在福州英华中学读书时,有幸聆听了清华大学调来一名很有学问的数学教师讲课。他给同学们讲了世界上一道数学难题:"大约在200年前,一位名叫哥德巴赫的德国数学家提出了'任何一个偶数均可表示两个素数之和'简称1+l。他一生没有证明出来,便给俄国彼得堡的数学家欧拉写信,请他帮助证明这道难题。...

高三数学说课稿范例5篇
上午好! 根据新课改的理论标准,我将从教材分析,学情分析,教学目标分析,学法、教法分析,教学过程分析...数学概念的形成来自解决实际问题和数学自身发展的需要.但概念的高度抽象,造成了难懂、难教和难学,这就...课堂中力求构建一种自主探究、和谐合作的教学氛围,让学生经历知识的探究过程,培养学生感受生活中的数学...

衡水市13481043142: 正则表达式好难懂,求高人指点,怎么学?有什么好的理解方法没有?看到那一串符号,晕了... -
盖虎转化: 1、入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等.此外,象...

衡水市13481043142: 一个正则表达式难题,请高手相助 -
盖虎转化: @"((([A-Za-z_].*[0-9])|([a-zA-Z_]{1,}[0-9].*[A-Za-z_])|([a-zA-Z_]{1,})){1,}\({1}){1}((([a-zA-Z_]{0,}|[0-9]{0,})|([a-zA-Z_]{1,}([0-9]{0,}[a-zA-Z_]{0,}){0,}){1}|(&#...

衡水市13481043142: 如何看懂复杂的正则表达式 -
盖虎转化: 1、入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等.此外,象JavaScript这种客户端

衡水市13481043142: 正则表达式问题,求高手解决啊! -
盖虎转化: 想要从:<table width="100%" border="0" cellpadding="0" cellspacing="0" class="titleTop2">内容</table> 提取出你要的“内容” 是吧?虽然正则表达式,很大程度上,语法都一样,但是不同语言的写法还是有点区别的.所以取决...

衡水市13481043142: 正则表达式的意思,求指点... -
盖虎转化: [frb][aiu][gx]这里匹配一个3个字符的字符串第一个字符是f,r,b中的任意一个第二个字符是a,i,u中的任意一个第三个字符是g,x中的任意一个

衡水市13481043142: 怎么学好Linux中的正则表达式?本人正在摸索中,不是很顺利,望大哥们提些建议?
盖虎转化: 朋友 你好 正则表达式广泛出现在UNIX/Linux相关的各种领域和多种编程语言里.从常见的shell命令到大名鼎鼎的Perl语言再到当前非常流行的PHP,它都扮演着一个重要的角色.甚至windows的命令行控制台也支持正则表达式.如果你是一个...

衡水市13481043142: 正则表达式的问题,我想一天了.请高人指点
盖虎转化: &lt;input type="text" name="che" check="^\S+$" warning="id不能为空,且不能含有空格"&gt; che的check要改成这个样子,在函数内部定义的变量patt之所以要用"^\\s+$"是因为"\"是转义符,JS会把"\S"自动解释,就不是正则表达式要表示的意思了,所以要对"\"符号进行转义,"\\"表示输出字符串的"\".所以,你这里不能为空的正则表达式,实际上应该是"^\S+$",你可以在 patt = "^\\S+$"; 赋值后,输出patt看看,就知道了.

衡水市13481043142: 求教几个正则表达式,求高人指教.
盖虎转化: 1、(^\_.*)|(.*\_$)2、.*\_{2,}.*

衡水市13481043142: 正则表达式{}根本不对,求指教啊 大神们 -
盖虎转化: 你的写法有问题 对于 fooot来说 o{2} 也是匹配的,因为里面有oo如果你这么写fo{2}t 那么就正确了或者这样写,可能更便于理解[^o]o{2}[^o]...

衡水市13481043142: 请正则表达式高手指点一二哈? -
盖虎转化: “\b”可以理解为限定匹配单词的边界.所以'bend'b表示查找所有的“end”,而且限定找到的“end”前后不能再有字母,也就是说仅匹配完整的单词“end”补充:我们...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网