一、Servie to Worker
1、Front Controller
---应用程序中心
2、Command
---根据请求作出相应的响应,maboo、joomla、phpnuke等较著名的开源方案用到Command
3、Service
---使用键值进行定位
4、View Helper
---使用Javabean将业务数据传给视图层
二、singleton(单体)
---实例化一个对象(对象是多线程对象)
三、Session Facade(会话)
---暴露该暴露的,通过一个键来查询信息
四、Value Object Assemble
---一次得到全部
五、Composite View
---就像网站的导航栏(头尾文件),修改一两个单独页面就可以改变整站
六、Synchronizer Token(同步标志位)
---用户经常会提交重复内容,实现此模式,问题就解决了
七、Decorator(装饰)
---在特定的时候给予特定的功能
October 2006 Archives
今天装了jetspeed与liferay;jetspeed装了1.6与2.0;liferay装了4.1.2,jdk用1.5。
界面上,感觉liferay好一点;liferay采用ssh(struts+spring+hibernate架构),jetspeed集成了jpetstore,有好几个demo可以作为学习参考,采用turbine技术,应该没有用到struts(改天看详细点),可以设置支持velocity。
在安装的时候,如果你选用的是tomcat作为jsp容器,在jetspeed中,是先将TOMCAT_HOME这个系统变量删除,tomcat才能正常启动;在liferay中,是先将CATALINA_HOME这个系统变量删除,tomcat才能正常启动;因为在startup.bat这个批处理文件中是先检测是否存在tomcat的默认安装目录,如果存在,就执行,如果不存在,才执行你{project}下面的startup.bat。
摘要:余毅 视觉行销与创业问题研究专家。现任浙江万里学院 设计艺术与建筑学院传达系主任。
当前创业已经成为社会的热点话题,许多人也想了解作为个人有没有低投入、低风险的创业方式,通过我们对创业问题的多年研究,从实例当中提取以下5种针对一般创业者的低投入创业模式供大家参考:
摘要:多元的社会,人们的职业观较以前是大不同了,原来倡导,“我是革命一块砖,哪里需要哪里搬”,现在却说,“谁动了我的奶酪?”
技术和市场的日新月异,使得一些新兴职业不断涌现,而其中的一些以其高薪、新鲜时尚的工作内容受到越来越多职场人的青睐。
同时新职业、新要求也带来巨大的培训需求,在这里我们向大家介绍一些新锐职业,以及这些新职业背后隐藏的培训市场潜力。
摘要:这是一则令人心酸难过的寓言,不只是因为它的结局悲惨,还有那个出乎意外的答案。
请给自己一个正确的方向恪尽职守,免得像故事中驴子一样命运悲惨。
故事的背景是一个传统的农庄,描述一位农夫和他所饲养的驴子与狗的悲剧;讲的却是现代都会上班族的辛酸与哀愁。
一位诚恳踏实的农夫是驴子和狗的主人。驴子每天日出而作、日落而息,工作非常卖力而且辛苦;却常常觉得不讨主人欢心,因为「做得好是应该,做不好叫你卷铺盖」的脸色,让驴子害怕又无奈,所以自怨自艾。
近年来就业市场存在的一个较为矛盾的现象值得关注,这就是:一方面,上百万高校学生毕业后找不到理想的职业,另一方面,越来越多的用人单位找不到需要的人才;一方面, MBA 、工商管理类、金融类、计算机类等不少专业的毕业生感叹社会不需要他们,另一方面,微软从 12 万多份简历中选不出需要的百人,深圳 16 万年薪聘不到合适的钳工尴尬局面的出现,除社会、学校、用人单位的原因之外,一个极其重要的原因是很多学生在选择自己的人生道路和职业方向时出现了偏差和失误。
职业生涯是一个人一生中所有与职业相联系的行为与活动,以及相关的态度、价值观、愿望等的连续性经历的过程,也是一个人一生中职业、职位的变迁及工作理想的实现过程。职业生涯规划则是针对决定个人职业选择的主观和客观因素进行分析和测定,确定个人的奋斗目标并选择实现这一目标的职业。职业生涯规划要求你根据自身的兴趣、特点,将自己定位在一个最能发挥自己长处的位置,选择最适合自己能力的事业。从这个意义上来说,最初的专业选择和最初的职业选择最为关键。
Unicode是一种字符编码规范 。
先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)
因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他一些符号 。
而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其他符号
这种字符编码规范显然用来处理英文没有什么问题 。(实际上也可以用来处理法文、德文等一些其他的西欧字符,但是不能和英文通用),但是面对中文、阿拉伯文之类复杂的文字,255个字符显然不够用
CVS客户端: CVSWEB 下载地址:http://www.freebsd.org/projects/cvsweb.html (最新版本:3.0.5) 缺陷跟踪: subversion服务器端: subversion客户端:
CVS 下载地址:http://www.cvshome.org/ (最新版本:hp:1.12.11,Linux and win32:1.11.17)
cvsnt 下载地址:http://www.cvsnt.com/cvspro/ (最新版本:2.0.58d)
TortoiseCVS 下载地址:http://www.tortoisecvs.org/ (最新版本:1.8.11)
wincvs 下载地址:http://cvsgui.sourceforge.net/download.html (最新版本:1.3.20.3)
Python 下载地址:http://www.python.org/download/ (最新版本:2.4)
TCL 下载地址:http://www.activestate.com/Products/ActiveTCL/ (最新版本:8.4.9.0)
SmartCVS 下载地址:http://www.regnis.de/download.html (最新版本:3.0.6)
viewcvs 下载地址:http://viewcvs.sourceforge.net/(最新版本:0.9.2)
CvsGraph 下载地址:http://www.akhphd.au.dk/~bertho/cvsgraph/(最新版本:1.5.1)
CVSTrac 下载地址:http://www.cnpack.org/ (http://www.cvstrac.org/)(最新版本:1.1.5)
基于CVS的代码统计工具:按代码量,按开发者的统计表等:
StatCVS 下载地址:http://sourceforge.net/projects/statcvs (最新版本:0.2.2)
CVS权限管理(CVSACL is a patch for CVS):
cvsacl 下载地址:http://cvsacl.sourceforge.net/(最新版本:1.2.2)
subversion 下载地址:http://subversion.tigris.org/project_packages.html#binary-packages (最新版本:1.3.2)
tortoisesvn 下载地址:http://tortoisesvn.tigris.org/ (最新版本:1.4.0)
rapidsvn 下载地址:http://rapidsvn.tigris.org/ (最新版本:0.9.3)
如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。
本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。
本教程分为以下几个部门,不仅仅是快速入门,最后我们还有一些高级功能的说明,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用,对于UNIX环境下,区别并不大。
基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内。这
种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法
1:功能确定后,由美工设计网页的UI(界面)部分,然后由程序员在其上加入代码显示逻
辑(比如循环,判断显示数据结果)。也就是通常的 jsp 页面制作,当然这部分可以由美工
完成模板,然后由 jsp 工程师再继续以它为原型创建相应的 jsp 页面。
2:功能确定后,由美工设计网页的UI(界面)部分,然后由网页制作人员在其上加入代码
显示逻辑(比如循环,判断显示数据结果),在这一步的 jsp 页面制作中,网页制作人员(通
常只懂得 javascript 和 html )在工程师的指导下学会如何嵌入 jsp taglib 标记,然后以美
工的模板为原型制作 jsp 网页。
Because some seem interested, I try to explain what you have to do when you want to generate static HTML-Pages out of your Joomla/Mambo-Site using HTTrack. (This is no true tutorial though)
1. check your site
First of all you should look at your site to make sure that it would work offline.
The main reason why a site is hardly able to work offline is the present of forms (with the exception of a javascript or mailto-target). All other kind of forms will not work (e.g. login).
怎样提高访问量一直是困绕广大网站站长的一个问题。提高访问量要招揽新的访问者,但更重要的是要留住回头客,这部分人可是在总的统计人次占绝对比重。各位看官,本文由雅虫译自一份Newsletter,讲的正是怎样留住回头客。
1.调查
在你网页上搞一些小调查,问一个有趣的问题,让访客投票。投票者也许会在明天或下周再来查看调查结果。
2.有奖活动
持续的搞一些有奖活动,奖品不必太贵重,只要对你的访客来说稍有用即可。他们会常来看结果。
3.原创材料
在网页上放一些别的地方没有的东西。并不是说你所有内容都必须是原创,但至少要有一部分是。这样别人才会来你那里。
4.小测验
要有小测验,每周公布答案。参加者会来看正确答案。
5.新闻
提供与主题相关的新闻。一般人都喜欢最新的新闻。你如能成为他们的第一手来源,他们就会重复访问。
6.玩笑
不断来点幽默,不要太严肃,讲点小笑话。如果访问者潜意识觉得很开心,他们就会不断访问。
7.免费清单
人们都喜欢免费的东西。列出一份免费清单,它们可以是软件、服务、小产品、电子图书等,但要与你的主题相关。及时更新,访客就会定期再来。
8.目录
在网页上列出与你主题相关的其他网站的连接。 这些网站要有趣,有用。你的网站就会起一个“目录”的作用,别人会常来,通过你访问其他的网站。
CMS名称: AngelineCMS
用户评分: / 1
差好
Version 0.6.4
www.angelinecms.org
来自官方网站的介绍:
AngelineCMS是使用PHP写的源代码开放的内容管理系统。AngelineCMS的目标是快速,安全,简单,容易
作。它是基于BSD许可证协议的自由软件。AngelineCMS还有一个相关程序,名字叫AngelineCMS-Lite,
该程序是小型的Blog系统,而且不需要数据库的支持,只要支持PHP的主机就可以运行,她主要是为只需
要小型blog系统,而且可以在大多数服务器运行的人使用。
原文:
AngelineCMS is an open source website Content Management System written in PHP. AngelineCMS
aims to be fast, secure, easy to use and simple. It is open source software under BSD
license. AngelineCMS also has little brother named AngelineCMS-Lite which is very small
blogger which doesn't require database, just a webserver running PHP. Lite is perfect for
those who want simple blogger which runs anywhere.
中文网站资源:无
是否有中国语言包:无 (等待您的中文化)
语言/数据库:PHP/MySQL
是否方便虚拟主机安装使用:是
类别:自由软件(开源/免费) BSD许可证协议
CMS名称: CivicSpace
用户评分: / 0
差好
Version 0.8.0.3
www.civicspacelabs.org
来自官方网站的介绍:
CivicSpace是为了实现分布式的组织内容而建立的。它可以为您提供以您为中心,为支持者加入到你的团
体提供了一个实体框架。不过,如果你想和其他网络的团体连接到一起,分享你们的思想,知识,关系还
有组织信息等,它也提供了支持。
原文:
CivicSpace is being built with the needs of distributed organizations in mind. It will give
you and the supporters within your community a solid framework for organizing and engaging
those around you in action. But it also will allow you to plug your community into a network
of other communities where you can share your ideas, knowledge, relationships, and
organizational information.
中文网站资源:无
是否有中国语言包:无 (等待您的中文化)
语言/数据库:PHP/MySQL
是否方便虚拟主机安装使用:是
类别:自由软件(开源/免费) GPL
CMS名称: Clever Copy
用户评分: / 0
差好
Version 2.0a
clevercopy.bestdirectbuy.com
来自官方网站的介绍:
Clever Copy是免费,可升级的整站程序和新闻发布系统。您可以仅仅把它当作一个Blog使用,也可以把
它做为一个强大的内容管理系统。您可以不用在懂得什么是整站程序,Blog,php,Cms或数据库的情况下
使用它,它的安装和维护都很简单。它使用自优化的数据库系统,意味着在一个高的网络流量的环境下仍
然运行快速,工作极好。它设计面向的用户有:初次使用者,有经验的用户,还有比较专业的用户。
原文:
Clever Copy is a free, fully scalable web site portal and news posting system. You can run
it as a very simple blog or ramp it up to a full Content Management System. It is easy to
setup, use and maintain requiring no previous knowledge of web portals, blogs, php, Cms's or
databases. It uses a self optomizing database meaning that it always runs as fast as
possible and works extremely well in a high traffic environment. It has been designed with
the following in mind - first time users, experienced users, long term users.
中文网站资源:无
是否有中国语言包:无 (等待您的中文化)
语言/数据库:PHP/MySQL
是否方便虚拟主机安装使用:是
类别:自由软件(开源/免费) GPL
CMS名称: CMS Made Simple
用户评分: / 0
差好
Version 0.8.1
www.cmsmadesimple.org
内容编辑用户:
username- user
password- demo
来自官方网站的介绍:
CMS Made Simple的目标是提供在以静态网站为主的网站,能有一个简单而且有效的内容管理。如果你的
网站内容不是经常改变,你该需要一个什么样的内容管理系统呢?让我们来告诉你:
现在有很多的内容管理系统,但是他们基本是相似的。如果你有大量的新闻和文章发布在你的网站上,那
么它们是非常好的,但是如果你的网站的内容不是经常改变,或者只有少部分内容改变用这些是否有效率
?CMS Made Simple更新你的网站的时候,可以让内容变成静态页面,它不管有多少其他内容存放在你的
网站上。
原文:
The aim of CMS Made Simple is to supply a simple and effective way of managing content of
primarily static sites. Before you can ask why you need a content management system for a
site that doesn't change its content, let me tell you.
There are tons of content management systems out there but they are basically all the same.
Other CMS systems are great if you have a lot of news or articles on your site, but what if
your site content doesn't change a lot, or only small parts of it change? Doesn't make a lot
of sense to create a new entry in your blog style site just for a simple update, and what's
the point of having time stamped blog entries if you are constantly updating them? Voila, in
comes CMS Made Simple.
CMS lets you update your pages and keep the content on a static page that will not become
stale regardless of how much other content gets placed on your site, unlike a blog style
site where entries get pushed off the page and your users have to check the archives or know
an obscure link to get to the original story.
中文网站资源:无
是否有中国语言包:有
语言/数据库:PHP/MySQL
是否方便虚拟主机安装使用:是
类别:自由软件(开源/免费) GPL
英文网站内容采集:
www.ezinearticles.com
www.webpronews.com
www.ideamarketers.com
www.certificate.net
www.goarticles.com
www.netterweb.com
www.articlecentral.com
www.articlefinders.com
www.web-source.net
www.biz-whiz.com
www.xongoo.com
www.websitefuel.com
www.zinos.com
www.addme.com
www.hamazines.com
www.warriorforum.com
www.internethomebusinessarticles.com
www.linksnoop.com
www.submityourarticle.com
www.article-directory.net
www.articlesforwomen.com
www.articlesfactory.com
www.articlez.com
www.isnare.com
www.sideroad.com
www.jorbins.com
www.mainstreetmom.com
www.family-content.com
www.articlesubmissions.com
www.fresh-articles.com
www.freezinesite.com
www.netterweb.com
www.valuablecontent.com
www.womans-netnews.com
www.marketingpitbull.com
www.searchwarp.com
www.awebhostingprovider.com
www.lilengine.com
www.storebuilder.co.uk
www.constant-content.com
www.toparticles.net
www.organic-rankings.com
www.workathomearticles.net
www.webmastertraffictools.com
www.commonconnections.com
www.internethomebusinessarticles.com
www.tigrafix.com/articles/submission.htm
www.allfreelancework.com/submitarticles.php
www.business-opportunity.biz
www.website-traffic.info
www.work-at-home-jobs-iowa.com
www.website-promotion-ranking-services.com
www.uniterra.com/submit-article.htm
www.webmomz.com
www.OpportunityUpdate.com
www.marketing-of-training.com
www.womans-net.com
www.MakingProfit.com
www.articlecentral.com
www.articlecity.com
www.bestparentingresources.com
www.boconline.com
www.businesstoolchest.coml
www.connectionteam.com
www.authorconnection.com
www.digital-women.com
www.globalnetone.com
www.hercommunity.com
www.howtoadvice.com
www.lrsmarketing.com
www.mega-success.com
www.mainstreetmom.com
www.midamericapublishing.com
www.obp.com
www.opportunityupdate.com
www.promoloop.com
www.promotezone.com
www.smartbiz.com
www.ezinefactory.co.za
www.upromote.com
www.freetraffictip.com
www.sales-masters-world.com
www.home-business-directory.comm
www.linksnoop.com
www.ushopi.comp
www.ezau.com
www.e-zinez.com
www.articlesubmissions.com
www.1st-in-articles.com
www.home-business-income.net
www.home-business-tips-newsletter.com
www.smartads.info
www.lilengine.com
www.biz-ewomen.com
www.home-based-business-opportunities.com
www.allthewebsites.org
www.smallbusinesshowto.com
www.jogena.com
www.williammcdermott.com
www.top-web-marketing.com
http://www.phpnuke.org PHP Nuke 免费
http://www.postnuke.com/ Post Nuke 免费
http://www.openeffect.com Open Effect 免费
http://mcyra.homeip.net/homepage/phpcms/index.htm Uber PHP CMS 免费 (德国)
http://www.dotvoid.com/firesite.php Fire Site 免费
http://developer.ez.no/ EZ Publish 免费
http://www.miraserver.com/ 商业 单站点 $179, 多站点 - $799
http://www.sitebox.org/ Site Box 免费
http://products.magnet-i.com/show/beehive Bee Hive 免费/商业版本
http://www.mamboserver.com Mambo Server 免费/商业版本
http://www.typo3.com Typo3 免费
http://www.drupal.org/ Drupal 免费
http://www.amalla.com/harpia/ 免费 Harpia 免费
http://www.phppp.com PHP Portal Project 免费/商业
APC ActionApps - http://www.apc.org/actionapps/
Ariadne - http://www.muze.nl/ariadne/
Back-End - http://www.back-end.org
Bitflux - http://www.bitflux.ch/developer/
Bricolage - http://www.bricolage.cc/
C-Arbre - http://realink.org/c-arbre/doc/
CAMPSITE - http://www.campware.org/campsite/
Cocoon - http://xml.apache.org
Cofax - http://www.cofax.org
Coranto - http://coranto.gweilo.org/
DaCode - http://www.dacode.org
DCP-Portal - http://www.dcp-portal.com
Drupal - http://www.drupal.org
Easy Publisher - http://www.easypublisher.com
Edit-X - http://www.edit-x.com/
Geeklog - http://www.geeklog.org
Krysalis - http://www.interakt.ro/products/Krysalis/index.php
Mambo - http://sourceforge.net/projects/mambo/
Mason - http://www.masonhq.com/
mCubes - http://www.mCubes.com/
Metadot - http://www.metadot.net
Midgard - http://www.midgard-project.org/
MMBase - http://www.mmbase.org
MySource - http://mysource.squiz.net/
N/X - http://nxwcms.sourceforge.net/
OpenACS - http://openacs.org/
OpenCMS - http://www.opencms.org
Pagetool - http://www.pagetool.org
phpCMS - http://phpcms.de/homepage/phpcms/index.htm
PHPNuke - http://www.phpnuke.org
PHProjekt - http://www.phprojekt.com/
phpSlash - http://www.phpslash.org
phpWebSite - http://phpwebsite.appstate.edu/
Redhat CCM - http://www.redhat.com/software/ccm/
Scoop - http://scoop.kur5hin.org
Slash - http://www.slashcode.com
Squishdot - http://www.squishdot.org
SSR - http://www.ssrtech.com/
TeaServlet - http://opensource.go.com/
thatware - http://www.atthat.com/
ttCMS - http://www.ttcms.com
Webgenerator-X - http://webgenerator-x.com
WebGUI - http://plainblack.com/webgui
WebMake - http://webmake.taint.org/
WebTop - http://webtop.newfangled.com
Wyona - http://www.wyona.org/
Xinity - http://www.xinity.org/
Xoops - http://xoops.sourceforge.net/
Zope - http://www.zope.org
EZ Contents - http://www.visualshapers.com
SiteWorksPro - http://www.siteworkspro.com/
VirtuaNews - http://www.virtuanews.co.uk/
国外的有中文支持的也都会有生成htm的
如MANBO,JOOMLA,XOOPS等
---灵叶
Grails: http://grails.codehaus.org
ExtremeTable: http://www.extremecomponents.org
Openi: http://www.openi.org
Openlaszlo http://www.openlaszlo.org
Xfire:http://xfire.codehaus.org
Drools:http://drools.codehaus.org/
Daffodil Replicator: http://www.daffodildb.com/replicator/
OSCache: http://www.opensymphony.com/oscache/
LifeType: http://www.lifetype.net/
Joomla: http://www.joomla.org/
超级玛莉: http://smclone.sourceforge.net/
前言 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。 索引 3.1_普通字符 4._各种操作符的运算优先级 目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。 正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。 注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。 1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因 此采用“正则表达式”这个术语。 随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。 如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。 7.1 基本模式匹配 ^once 这个模式包含一个特殊的字符
3.2_非打印字符
3.3_特殊字符
3.4_限定符
3.5_定位符
3.6_选择
3.7_后向引用
5._全部符号解释
6._部分例子
7._正则表达式匹配规则
1. 引子
2. 正则表达式的历史
3. 正则表达式定义
3.1 普通字符
3.2 非打印字符
字符
含义
\cx
匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f
匹配一个换页符。等价于 \x0c 和 \cL。
\n
匹配一个换行符。等价于 \x0a 和 \cJ。
\r
匹配一个回车符。等价于 \x0d 和 \cM。
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t
匹配一个制表符。等价于 \x09 和 \cI。
\v
匹配一个垂直制表符。等价于 \x0b 和 \cK。
3.3 特殊字符
所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。
特别字符
说明
$
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( )
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
*
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
.
匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[
标记一个中括号表达式的开始。要匹配 [,请使用 \[。
?
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^
匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{
标记限定符表达式的开始。要匹配 {,请使用 \{。
|
指明两项之间的一个选择。要匹配 |,请使用 \|。
3.4 限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
正则表达式的限定符有:
字符
描述
*
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?
匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "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?'。请注意在逗号和两个数之间不能有空格。
3.5 定位符
用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。
3.6 选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。
其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
3.7 后向引用
对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每 个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。
可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。
4. 各种操作符的运算优先级
相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:
操作符
描述
\
转义符
(), (?:), (?=), []
圆括号和方括号
*, +, ?, {n}, {n,}, {n,m}
限定符
^, $, \anymetacharacter
位置和顺序
|
“或”操作
5. 全部符号解释
字符
描述
\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
*
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?
匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "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 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern)
匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern)
正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y
匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz]
字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz]
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z]
字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z]
负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B
匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx
匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d
匹配一个数字字符。等价于 [0-9]。
\D
匹配一个非数字字符。等价于 [^0-9]。
\f
匹配一个换页符。等价于 \x0c 和 \cL。
\n
匹配一个换行符。等价于 \x0a 和 \cJ。
\r
匹配一个回车符。等价于 \x0d 和 \cM。
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t
匹配一个制表符。等价于 \x09 和 \cI。
\v
匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w
匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W
匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn
匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n
标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm
标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml
如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un
匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。
6. 部分例子
正则表达式
说明
/\b([a-z]+) \1\b/gi
一个单词连续出现的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/
将一个URL解析为协议、域、端口及相对路径
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/
定位章节的位置
/[-a-z]/
A至z共26个字母再加一个-号。
/ter\b/
可匹配chapter,而不能terminal
/\Bapt/
可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/
可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
7. 正则表达式匹配规则
一切从最基本的开始。模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: