文档库 最新最全的文档下载
当前位置:文档库 › 通俗易懂的正则表达式语法详解

通俗易懂的正则表达式语法详解

通俗易懂的正则表达式语法详解
通俗易懂的正则表达式语法详解

深入浅出之正则表达式(二)

前言:

本文是前一片文章《深入浅出之正则表达式(一)》的续篇,在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理。

本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!

9.单词边界

$ 匹配输入字符串的结束位置。如果设置了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。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。

? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。

. 匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式。

(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches 集合得到,在VBScript中使用SubMatches集合,在JScript中则使

高中英语语法必背100句

高中英语语法必背100句 时态语态 1. It has been raining in the past three weeks.完成时间状语 过去三周一直在下雨。 2. He was writing a book last year. but I don't know whether he has finished it. 过去进行时现在完成时 他去年在写一本书,我不知道他完成了没。 3. The plane is arriving in 5 minutes. 进行时态表将来 飞机将十5分钟之后到达。 4. I had meant to come here,but I was too busy then. 过去完成时 我本来打算来这儿的,但是当时太忙了。 5. If he comes today, I won't go. If引导条件状从,遵循”主将从现"原则今天如果他会来,我将不走。 6. He studied in Shanghai for 3 years. and then he has lived in Beijing till now/since then/ever since. 一般过去时,完成时 他在上海读了三年书。然后就一直住在北。 7. I will have written 200 poems by the end of next term. 将来完成时到下学期末为止,我将写完200首诗。 8. He is afraid of being laughed at.被动中的介词不省略 他害怕人嘲笑。 9. The workers get paid by the month. get+done表被动 这些工人按月发工资。 10. His theory proved (to be) true. 系动词省略 他的理论被证实是对的。 11. This book sells well and is worth reading. Besides, it is easy to understand.主动表被动

JS正则表达式大全

JS正则表达式大全 JS正则表达式大全【1】 正则表达式中的特殊字符【留着以后查用】字符含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" * 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa + 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa ? 匹配前面元字符0次或1次,/ba*/将匹配b,ba (x) 匹配x保存x在名为$1...$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界 \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M \d 匹配一个字数字符,/\d/ = /[0-9]/ \D 匹配一个非字数字符,/\D/ = /[^0-9]/ \n 匹配一个换行符 \r 匹配一个回车符 \s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ \t 匹配一个制表符 \v 匹配一个重直制表符 \w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配

高中英语语法教学的重要性及策略

高 考 ?学科教育? 二○ 一三年 八月 81 高中英语语法教学的重要性及策略 盐城市伍佑中学 宋 政 摘 要:本文从教师和学生的心理来分析问题,发现了现代英语教学过程中对待语法知识的一些误区,阐述了语法教学在高中英语教学中的重要性,然后根据自己的理解和经验总结出了一些关于英语语法教学的方法,这些方法更重要的是培养学生的自主学习能力。 关键词:高中英语;语法教学;有效性策略;自主学习; 一、英语语法教学的重要性 在高中英语教学的过程中,有很多老师不太在意语法的教学。在应试教育的背景下,只注重学生的听、说、读、写、译这五个方面,忽视了语法的重要性。了解语法,对于学习一门语言极其重要,它能够帮助我们更快更好的理解语言并运用语言。所以,在高中英语教学过程中,让学生熟练的掌握英语语法,十分必要。高中生学习英语已不是初次接触,所以早已没有开始学习的热情,随着英语的深度和难度的加大,当老师讲解语法知识时,会感到困惑,觉得英语学习碰到了瓶颈。尽管买了一大堆的资料,练习翻译、写作,却发现效果不明显。 英语学习是一个全面的过程,包括听、说、读、写、译和语法,语法更是其中最重要的一个方面。只有掌握了语法,才能更为深入和全面的了解英语,才能更为直观的了解作者想要表达的意思。通过老师在课堂上对英语书中知识的讲解,学生会对英语有一些了解,但这些并不足以让他们熟练的运用英语,这就需要用有效方法去学习语法,使得英语的学习更加规范和全面。教授学生英语语法知识,有助于提高学生的英语成绩,为日后学生的英语交流打下基础。因此,英语语法的教学不能忽略,老师要运用有效的、有策略的方法让学生系统的接受语法知识。 二、英语语法教学的策略 1、明确教学任务,分清重难点。 高中生所要接触的语法内容很多,比如各种从句、直接引语、间接引语和情态动词等,这些内容前后联系,复杂繁琐,需要老师从整体上系统具体的把握这些知识点,以便于教学过程中能够得心应手。同时,老师也要对自己学生的语法基础有大概的了解。再者,老师的教学过程要有重点,不能没有层次。要注意分析学生的作业和试卷,整理出学生易错的知识,并加上自己对语法的了解,然后在课堂上把整理出来的重点详细讲解,其他内容大概讲解,对于个别同学提出的问题要认真对待,确保每个学生都能理解这些语法知识。 2、把语法知识融入日常教学,并循环复习。 有些老师会仔细地把自己的教学任务分成好几部分,然后按照自己的安排决定每节课所要教的内容。我觉得这并不科学,任何一门语言都是整体的,不能够把它分成多少部分来教学,语法是贯穿整个语言之中的。在英语教学过程中,如果老师一下子把所有语法都交给学生,学生是无法接受的,他们的能力有限,如果一次性要学的东西很多,那就容易弄混、弄错,甚至什么都没记住。因此把语法只是融入日常的教学环节,是明智之举。艾宾浩斯的遗忘曲线规律告诉我们,人们接受信息时是短时记忆,会遗忘,只有及时的复习才能变成长时记忆。循环复习知识点,有助于加深印象,在教学过程中,老师要有耐心,要不厌其烦的讲解同一个知识点。 3、理论联系实际,培养学生自主能力。 老师在教学过程中要注意理论与实际相联系,把语法结构用在平时的交流中,让学生在实际的语言中去感知、理解、 记忆,从而更有效地掌握语法。高尔基说过,书籍是人类进 步的阶梯。看书是人们获取知识的重要途径,但很多学生不知道该怎么看,老师可以推荐一些比较好的语法书给学生,让他们利用课余时间去看。重要的是要让他们学会自己发现问题、提出问题及解决问题,培养他们自主学习的能力,这时老师应该充当的是辅助学习的角色,《英语课程标准》中也指出要以学生为主体的思想。 4、多样教学,活跃课堂气氛。 理论上来说,学习应该是一个快乐的过程,但由于我国的特殊背景,高中的课堂一般都异常沉闷,不像国外,课上随意发言,老师和学生像朋友一样交流问题。而且由于我国高中生课程较多,英语不是唯一课程,课后用来学习英语的时间也不多,因此英语的运用能力得不到锻炼,语法知识就不会很好。在课堂上,老师可以为学生创造出一些情境,让他们自由发挥,提高交际能力,激发学生对英语的学习兴趣。老师一味的用枯燥的专业名词讲解语法势必会让学生感到无聊乏味,如果能增加教学的趣味,就能够带来意料之外的好结果。比如有些琐碎的知识点,一个个记很麻烦也不一定能够记住,这时可用顺口溜,语句简短,趣味性也不错,这就可以引起学生的兴趣,就容易记住那些本来不易记住的东西。同时,也可以推荐学生多看一些好的美剧和英语书籍,既可以放松心情也可以学习知识,一举两得。 5、结合对比归纳法。 英语语法复杂繁琐,有很多规则相似,但不易区分,尤其在运用时,学生很容易搞错。在教学过程中,老师除了要及时帮助学生改正错误,还要帮助他们发现规律,运用对比归纳法发现区别,加深印象。例如在学习名词性从句时,可以对比以下句子,分清各是什么从句: ①She dose not know when Marry will come back.②The question is when Marry will come back.③When Marry will come back is not known yet. ④They have no idea about when Marry will come back. 让学生仔细比较四个斜体的句子,尽管都是when Marry will come back 但由于位置不同,句子结构也不同,学生可以发现第一个宾语从句,第二个是表语从句,第三个是主语从句,第四个是同位语从句。然后老师将名词性从句的词序特征、四类连接词和关系代词的使用方法进行对比和归纳,让学生能全面了解名词性从句,从而达到让他们正确运用的目的。 总而言之,语法教学是一个长期而艰巨的过程。作为教师,应不断的学习,提高自身业务能力,可以针对不同的教学目标和内容,采用不同的教学方法。语法的教学过程不是一味地让学生接受知识,而是要让学生灵活运用知识。老师在教学过程中,要精心设计教学活动,并注意语法知识与其他英语知识的融合,使学生更好地理解所学知识。

Find用法详解(含正则表达式)

Sed基础用法篇 刚开始接触linux,其实还是老实用vim来编辑文件,不过同样的过程重复多次,你就要想办法简化你的过程。sed绝对是一个好的命令或者工具,你不需要用vim打开文件就可以直接编辑(推荐掌握以下用法)。 1、删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*//g' filename 2、行后和行前添加新行 行后:sed 's/pattern/&\n/g' filename 行前:sed 's/pattern/\n&/g' filename &代表pattern 3、使用变量替换(使用双引号) sed ‐e "s/$var1/$var2/g" filename 4、在第一行前插入文本 sed ‐i '1 i\插入字符串' filename 5、在最后一行插入 sed ‐i '$ a\插入字符串' filename

6、在匹配行前插入 sed ‐i '/pattern/ i "插入字符串"' filename 7、在匹配行后插入 sed ‐i '/pattern/ a "插入字符串"' filename 8、删除文本中空行和空格组成的行以及#号注释的行 grep ‐v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d 9、要将目录/modules下面所有文件中的zhangsan都修改成list,可用如下命令:(注意备份原文件) sed ‐i 's/zhangsan/list/g' `grep zhangsan ‐rl /modules` Linux命令FIND详解 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 一、find 命令格式 1、find命令的一般形式为; find pathname ‐options [‐print ‐exec ‐ok ...]

正则表达式.DOC

正则表达式 第一部分: ----------------- 正则表达式(REs)通常被错误地认为是只有少数人理解的一种神秘语言。在表面上它们确实看起来杂乱无章,如果你不知道它的语法,那么它的代码在你眼里只是一堆文字垃圾而已。实际上,正则表达式是非常简单并且可以被理解。读完这篇文章后,你将会通晓正则表达式的通用语法。 支持多种平台 正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group 组织认定。 正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。 许多程序中都使用了正则表达式,包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳,如HTML和XML,这些采纳通常只是整个标准的一个子集。 比你想象的还要普通 随着正则表达式移植到交叉平台的程序语言的发展,这的功能也日益完整,使用也逐渐广泛。网络上的搜索引擎使用它,e-mail程序也使用它,即使你不是一个UNIX程序员,你也可以使用规则语言来简化你的程序而缩短你的开发时间。 正则表达式101 很多正则表达式的语法看起来很相似,这是因为你以前你没有研究过它们。通配符是RE的一个结构类型,即重复操作。让我们先看一看ERE标准的最通用的基本语法类型。为了能够提供具有特定用途的范例,我将使用几个不同的程序。

正则表达式

正则表达式 一、什么是这则表达式 正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了java程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。一般使用的java.util.regex API所支持的正则表达式语法。 二、测试用具 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex{ public static void main(String[]args)throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); if(br==null){ System.out.println("没有输入任何数据"); System.exit(1); } while(true){ System.out.print("输入表达式:"); Pattern pattern=https://www.wendangku.net/doc/261804353.html,pile(br.readLine()); System.out.print("输入字符串:"); Matcher matcher=pattern.matcher(br.readLine()); boolean found=false; while(matcher.find()){ System.out.println("找到子字符串"+matcher.group()+" 开始于索引"+matcher.start()+"结束于索引"+matcher.end()+"\n") found=true; } if(!found){ System.out.println("没有找到子字符串\n"); } } } }

高中英语语法最重要知识汇总

按:本套资料省去了名词、代词、形容词等部分,保留了最最核心的句型和动词。希望能有所帮助。 第一章名词性从句 在句子中起名词作用的句子叫名词性从句。名词性从句的功能相当于名词词组, 它在复合句中能担任主语、宾语、表语、同位语、介词宾语等,因此根据它在句中不同的语法功能,名词从句又可分别称为主语从句、宾语从句、表语从句和同位语从句。 一.主语从句 主语从句是在复合句中充当主语的从句,通常放在主句谓语动词之前或由形式主语it代替,而本身放在句子末尾。 1. It作形式主语和it引导强调句的比较 It作形式主语代替主语从句,主要是为了平衡句子结构,主语从句的连接词没有变化。而it引导的强调句则是对句子某一部分进行强调,无论强调的是什么成分,都可用连词that。被强调部分指人时也可用who/whom。例如: a) It is a pity that you didn’t go to see the film. 你不去看那场电影真可惜。 - b) It doesn’t interest me whether you succeed or not.我对你成功与否不感兴趣。 c) It is in the morning that the murder took place.谋杀案是在早上发生的。(强调句型) d) It is John that broke the window.是John打碎的窗户。(强调句型) 2. 用it作形式主语的结构 (1) It is +名词+从句 It is a fact that …; It is an honor that…; It is common knowledge that… (2) It is +形容词+从句 It is natural that…It is strange that… . (3) It is +不及物动词+从句 It seems that…It happened that…It appears that… (4) It +过去分词+从句 It is reported that…It has been proved that…It is said that… 3. 主语从句不可位于句首的五种情况: (1)if引导的主语从句不可居于复合句句首。 (2)It is said /reported…结构中的主语从句不可提前。例如: 正确表达:It is said that President Jiang will visit our school next week. ( 错误表达:That President Jiang will visit our school next week is said. (3)It happens/occurs…结构中的主语从句不可提前。例如: 正确表达:It occurred to him that he failed in the examination. 错误表达:That he failed in the examination occurred to him. (4)It doesn’t matter how/whether …结构中的主语从句不可提前。例如: 正确表达:It doesn’t matter whether he is wrong or not. 错误表达:Whether he is wrong or not doesn’t matter. (5)含主语从句的复合句是疑问句时,主语从句不可提前。例如: ; 正确表达:Is it likely that it will rain in the evening 错误表达:Is that will rain in the evening likely 4. what 与that 在引导主语从句时的区别 what 引导主语从句时在句时在从句中充当句子成分,如主语.宾语.表语,而that 则不然。例如:

正则表达式语法完整版

正则表达式基础知识 一个正则表达式就是由普通字符(例如字符a 到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如:

下面看几个例子: "^The":表示所有以"The"开始的字符串("There","The cat"等); "of despair$":表示所以以"of despair"结尾的字符串; "^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。 '*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“没有或更多”,“一次或更多”还有“没有或一次”。下面是几个例子: "ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多; "ab?":表示一个字符串有一个a后面跟着零个或者一个b; "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。 也可以使用范围,用大括号括起,用以表示重复次数的范围。 "ab{2}":表示一个字符串有一个a跟着2个b("abb"); "ab{2,}":表示一个字符串有一个a跟着至少2个b; "ab{3,5}":表示一个字符串有一个a跟着3到5个b。

请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。 还有,你可能注意到了,'*','+'和'?'相当于"{0,}","{1,}"和"{0,1}"。 还有一个'|',表示“或”操作: "hi|hello":表示一个字符串里有"hi"或者"hello"; "(b|cd)ef":表示"bef"或"cdef"; "(a|b)*c":表示一串"a""b"混合的字符串后面跟一个"c"; '.'可以替代任何字符: "a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字; "^.{3}$":表示有任意三个字符的字符串(长度为3个字符); 方括号表示某些字符允许在一个字符串中的某一特定位置出现: "[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b"); "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串; "[0-9]%":表示一个百分号前有一位的数字; "[0-9]+":表示一个以上的数字; ",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。 你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表 示两个百分号中不应该出现字母)。 为了逐字表达,必须在"^.$()|*+?{\"这些字符前加上转移字符'\'。 请注意在方括号中,不需要转义字符。

常用正则表达式

1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$"//非负整数(正整数+ 0) 3. "^[0-9]*[1-9][0-9]*$"//正整数 4. "^((-\d+)|(0+))$"//非正整数(负整数+ 0) 5. "^-[0-9]*[1-9][0-9]*$"//负整数 6. "^-?\d+$"//整数 7. "^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0) 8. "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数 9. "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0) 10. "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数 11. "^(-?\d+)(\.\d+)?$"//浮点数 12. "^[A-Za-z]+$"//由26个英文字母组成的字符串 13. "^[A-Z]+$"//由26个英文字母的大写组成的字符串 14. "^[a-z]+$"//由26个英文字母的小写组成的字符串 15. "^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串 16. "^\w+$"//由数字、26个英文字母或者下划线组成的字符串 17. "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址 18. "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url 19. /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 20. /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 21. "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil 22. /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码 23. "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址 24. 25. 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 26. 匹配双字节字符(包括汉字在内):[^\x00-\xff] 27. 匹配空行的正则表达式:\n[\s| ]*\r 28. 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 29. 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 30. 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 31. 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 32. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 33. 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 34. 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 35. 36. 37. 元字符及其在正则表达式上下文中的行为:

正则表达式

多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容。 此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等。 在这篇文章中,我将简要地介绍System.Text.RegularExpression中的类和方法、一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式。 应该掌握的基础知识 规则表达式的知识可能是不少编程人员“常学常忘”的知识之一。在这篇文章中,我们将假定你已经掌握了规则表达式的用法,尤其是Perl 5中表达式的用法。.NET的regexp类是Perl 5中表达式的一个超集,因此,从理论上说它将作为一个很好的起点。我们还假设你具有了C#的语法和.NET架构的基本知识。 如果你没有规则表达式方面的知识,我建议你从Perl 5的语法着手开始学习。在规则表达式方面的权威书籍是由杰弗里?弗雷德尔编写的《掌握表达式》一书,对于希望深刻理解表达式的读者,我们强烈建议阅读这本书。 RegularExpression组合体 regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件,例如: csc r:System.Text.RegularExpressions.dll foo.cs 命令将创建foo.exe文件,它就引用了System.Text.RegularExpressions文件。 名字空间简介 在名字空间中仅仅包含着6个类和一个定义,它们是: Capture: 包含一次匹配的结果; CaptureCollection: Capture的序列; Group: 一次组记录的结果,由Capture继承而来; Match: 一次表达式的匹配结果,由Group继承而来; MatchCollection: Match的一个序列; MatchEvaluator: 执行替换操作时使用的代理; Regex: 编译后的表达式的实例。 Regex类中还包含一些静态的方法: Escape: 对字符串中的regex中的转义符进行转义; IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值; Match: 返回Match的实例; Matches: 返回一系列的Match的方法; Replace: 用替换字符串替换匹配的表达式; Split: 返回一系列由表达式决定的字符串; Unescape:不对字符串中的转义字符转义。

正则表达式

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。 字符描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“z o+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“d o”。?等价于{0,1}。 {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 {n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“fo o o ood”中的所有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”在内的任何字符,请使用像“[\s\S]”的模式。

很完整的一篇正则表达式总结

1、正则表达式-完结篇---工具类开发--- ? 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 '/.+/', 'email'=> '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'url'=> '/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/ \?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/', 'currency'=> '/^\d+(\.\d+)?$/', 'number'=> '/^\d+$/', 'zip'=> '/^\d{6}$/', 'integer'=> '/^[-\+]?\d+$/', 'double'=> '/^[-\+]?\d+(\.\d+)?$/',

5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2'english'=> '/^[A-Za-z]+$/', 'qq'=> '/^\d{5,11}$/', 'mobile'=> '/^1(3|4|5|7|8)\d{9}$/', ); //定义其他属性 private$returnMatchResult=false; //返回类型判断 private$fixMode=null; //修正模式 private$matches=array(); //存放匹配结果 private$isMatch=false; //构造函数,实例化后传入默认的两个参数 public function __construct($returnMatchResult=false,$fixMode=null){ $this->returnMatchResult=$returnMatchResult; $this->fixMode=$fixMode; } //判断返回结果类型,为匹配结果matches还是匹配成功与否isMatch,并调用返回方法 private function regex($pattern,$subject){ if(array_key_exists(strtolower($pattern), $this->validate)) $pattern=$this->validate[$pattern].$this->fixMode; //判断后再连接上修正模式作为匹配的正则表达式 $this->returnMatchResult ?

常用正则表达式(判断)

正则表达式判断 //判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); if(str.length==0){ alert('对不起,文本框不能为空或者为空格!');//请将“文本框”改成你需要验证的属性名称! } } //判断日期类型是否为YYYY-MM-DD格式的类型 function IsDate(){ var str = document.getElementById('str').value.trim(); if(str.length!=0){ var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; var r = str.match(reg); if(r==null) alert('对不起,您输入的日期格式不正确!'); //请将“日期”改成你需要验证的属性名称! } } //判断日期类型是否为YYYY-MM-DD hh:mm:ss格式的类型 function IsDateTime(){ var str = document.getElementById('str').value.trim(); if(str.length!=0){ var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if(r==null) alert('对不起,您输入的日期格式不正确!'); //请将“日期”改成你需要验证的属性名称! } } //判断日期类型是否为hh:mm:ss格式的类型 function IsTime() { var str = document.getElementById('str').value.trim(); if(str.length!=0){ reg=/^((20|21|22|23|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/ if(!reg.test(str)){ alert("对不起,您输入的日期格式不正确!");//请将“日期”改成你需要验证的属性名称!

高中英语语法口诀_英语语法的记忆方法顺口溜

高中英语语法口诀 高中阶段的语法知识在现行的教材中分布得较分散、零碎,学生学起来颇感吃力,难以记牢。一般说来,学习语法知识的途径很多,但教学中常用的主要有如下二种:一是通过教师的讲解,对所学语法规则的概念、结构,用法有个确切的了解;二是通过大量的练习,在英语实践中正确、熟练地掌握语法规则的用法。仔细惦量这两种方法,其实都强调了同一个极其重要的东西,即是“记忆”。记忆的方式、方法很多,诸如分类记忆法,直观形象记忆法、奇持联想记忆法,特征记忆法等等。这里,笔者主要从词法与句法两大块对巧记英语语法作些阐述。 一、词法 (一)巧记名词变复数的规则: 单数变为复数式,一般词尾加-s; 下列句词词尾后,要加-s先加-e。 发音[f]、[t]、[s]和[z],或是某些辅音加-o时。 有些名词变复数,词尾变化要注意。 y前字母是辅音,一律变y为-ies. 遇到f和fe,有时需要变-ves. 少数名词不规则,特殊情况要强记。 说明: 1.名词变复数形式,一般在词尾加-s. eg:bag-bagsbanana-bananasbird-birdspen-pens,.... 2.词尾发音为[f,ts,z]的名词(即以字母sh,ch,s,x结尾者)在变复数时,要在词尾加-es,eg:watch-watches,box-boxes,bus-buses,etc) 3.若词尾字母o的前面是辅音字母,变为复数时,有些加-es,eg:hero-heroes,Negro-Negroes,patato-patatoes,tomato-tomatoes.这四个词可组成一句话来记忆:HeroesandNegroeseatpotatoesandtomatoes(英雄和黑人吃马铃薯和西红柿。简为二人吃二菜。) 但有些以o结尾的名词则加-s,eg:photo–photoes,piano–pianos等。 4.若词尾字母y前加的是辅音字母时,变为复数,首先把y变为i,再加-es,eg:family–families,city-cities,baby–babies等,但若词尾y前为元音字母时,则可直接加-s,eg:day-days,boy-boys

高中英语语法归纳总结 有哪些重要的语法

高中英语语法归纳总结有哪些重要的语法 高中英语有哪些重要的语法呢,学好语法是提升英语成绩的关键,下面 小编为大家提供高中英语语法总结,仅供大家参考。 ? ?高中英语中常用的介词表示时间的at, in,on ?(1)at:表示片刻的时间,at 8 o'clock,at midnight, at the beginning of, at the age of, at Christmas, at New Year 等。 ?(2)in:表示一段的时间,如in the morning, in the afternoon, in October,in the past等。 ?(3)on:总是跟日子有关,on Sunday, on Christmas morning,等。 ?表示时间的since 和from: ?(1)since 表示从过去到现在的一段时间的过程,常与现在完成时连用. ?(2)from 表示从时间的某一点开始,不涉及与现在的关系。一般多与现在时、过去时、将来时连用。 ?如:I hope to do morning exercises from today.我希望从今天开始每天做早操。 ?表示时间的in 和after: ?两者都表示“在(某个时间)之后,区别在于in表示“在(一段时间)之后” ,而after 则表示“在(某一具体时间点之后),in 短语和将来时态连用,after 短语和过去时态或将来时态连用。 ?如:We'll leave in three days.我们3天内会离开。 ?After two months he returned.2个月之后他回来了。 ?表示“穿过……”的through 和across:through 表示从内部通过,与in 有

正则表达式

正则表达式
目录
1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在 C 语言中使用正则表达式
1. 引言
以前我们用 grep 在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义. 其实 grep 还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合 xxxxx@xxxx.xxx 模式的字符串(也就是 email 地址),要求 x 字符可以是字母,数字,下划 线,小数点或减号,email 地址的每一部分可以有一个或多个 x 字符,例如 abc.d@https://www.wendangku.net/doc/261804353.html,, 1_2@987-6.54,当然符合这个模式的不全是合法的 email 地址,但至少可以做一次初步筛选, 筛掉 a.b,c@d 等肯定不是 email 地址的字符串.再比如,找出所有符合 yyy.yyy.yyy.yyy 模 式的字符串(也就是 IP 地址),要求 y 是 0-9 的数字,IP 地址的每一部分可以有 1-3 个 y 字 符. 如果要用 grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串 呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息: 字符类(Character Class):如上例的 x 和 y,它们在模式中表示一个字符,但是取 值范围是一类字符中的任意一个. 数量限定符(Quantifier): 邮件地址的每一部分可以有一个或多个 x 字符,IP 地址 的每一部分可以有 1-3 个 y 字符 各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符@和. 隔开,IP 地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述.为 了表示位置关系,还有位置限定符(Anchor)的概念,将在下面介绍.
规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一 起表示一个模式,这就是正则表达式(Regular Expression).例如 email 地址的正则表达式 可以写成[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+,IP 地址的正则表达式可以 写成[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.下一节介绍正则表达式的语法, 我们先看看正则表达式在 grep 中怎么用.例如有这样一个文本文件 testfile:
192.168.1.1
第 1 页 共 10 页

相关文档