2008-03-05

你知道正则表达式的形式化定义吗?

关键字: 正则表达式
正则表达式想必大家都用过,确实是很好很强大的东东。但是正则表达式的形式化定义各位知道吗?最近无聊看一本编译方面的书时,里面正好讲到了这个,还是挺有意思的。发出来和大家分享。 首先,正则表达式是一种符号表示法,是为了用有限的描述来详细说明(可能)无限的语言。也就是说正则表达式是针对某个特定语言的,可以说每个正则表达式都定义了一种语言。每个正则表达式代表一个字符集。在正则表达式中,需要定义如下几个概念:符号:对语言字母表中的每个符号a,正则表达式a表示仅包含字符串a的语言。或:对于给定的两个正则表达式M和N,可以利用或操作(|)连接为一个新的正则表达式:M|N。若一个字符串属于语言M或语 ...
本来像NetBeans这样到东东,应该是装上就可以用到。但是在Leopard上就是有些问题出在gem上面。Leopard上默认的gem目录是系统目录,而NetBeans管理gem的时候需要写权限,于是就会报错了。典型的情况就是安装ruby-debug-ide的时候。 为了解决这个问题,我们可以为NetBeans设置自己的GEM_HOME,也就是它把gem安装到哪里。假设你是使用dmg安装的NetBeans,那么应该装在/Applications/NetBeans目录下,这样可以打开下面到文件。 sudo vim /Applications/NetBeans/NetBeans\ 6.0.a ...
这几天刚刚给自己的小白安装了Leopard,开始迫不及待的把开发环境搬到上面去。Leopard已经自带了完整的ruby-1.8.6和rails-1.2.3,我的项目是用rails-1.2.6的,另外还有一些gem要安装,所以二话不说,马上开始。 # 更新gems,从0.9.4到1.0.1 sudo gem update --system # 安装rails-1.2.6 sudo gem install rails -v 1.2.6 # 安装rails-2.0.2 sudo gem install rails # 安装其他package sudo gem install fer ...
首先安装rubyzip: gem install rubyzip 《Ruby Cookbook》里面简要地介绍了如何使用rubyzip读写zip文件,代码如下: # 写zip require 'rubygems' require 'zip/zipfilesystem' Zip::ZipFile.open('zipfile.zip', Zip::ZipFile::CREATE) do |zip| zip.file.open('file1', 'w') { |f| f << 'This is file 1.' } zip.dir.mkdir('sub_di ...
Ok,我知道,这里更应该写技术博客,我在这里说这些无聊的话没什么意思,但是这几天老罗好像心血来潮似的连续发表关于苹果的言论,字里行间都透露着一种让人不舒服的得意心理。那种感觉就好像全世界只有他看清了事实的真相、其它人都是笨蛋一样。虽然老罗一贯是这样的口吻(我没敢说嘴脸,呵呵),但是这次着实让我不爽,因为关于苹果的事情怎么看都是比较专业的话题,老罗虽然自称卖过电脑(好像是在天津吧),但是也不会专业到精辟点评苹果的程度。 老罗已经写下了苹果的老总、苹果的粉丝,还要打算写苹果的产品。趁他还没写出来,我在这里说说自己的想法,权当自娱自乐。我知道,我知道,这里更应该写技术博客,但是我也比较为难,因 ...
我们知道,在rails中,habtm和polymorphic都是非常好的东东,特别是后者,可以说是rails的ORM中非常强大的功能。《Agile Web Development with Rails》虽然详细讲述了habtm和polymorphic关联,也讲了如何把模型类映射为连接表,但是并没有讲如何把habtm和polymorphic一起使用做一个介绍。这里我就来简单说一下。 还是出自真实项目中的需求,项目是全国大学本科教学评估支持系统,说白了就是大学用来支持本科教学评估的东西。里面有这样一个use case: 评估中需要召开座谈会,参加的人有:专家、教师、学生...(反正就是学校里面 ...
手头一个项目有这样一个需求,数据库中有一张学生表students,其中每个学生都有自己的生源地(come_from),用户希望能够随机的选择一些学生出来,但是要保证每个生源地的学生都有。 我的开发环境是RoR + MySql,简单考虑了一下后,第一个能想到的方法是在rails中生成随机数,然后用offset来得到随机的学生。但是这样做比较麻烦,性能也会很差,因为首先要知道每个生源地下有多少学生,不然的话,生成的随机数可能会过大。 排除了这个选择,于是考虑是否可以在sql级别实现。去查了查MySql的manual,发现有个然数RAND()可以用来生成0到1之间的随机浮点数,感觉可以用这个来做 ...
早就想找个机会写写rake文件,但是接触到的项目都不怎么需要,所以一直也没有去学习一下。这两天一个项目需要把客户给的很多excel文件导入到数据库中(我用的好似MySQL),到网上找了一些工具,感觉都不好,因为客户的excel格式比较乱(特别是日期的格式,竟然是中文数字和阿拉伯数字都有的...),所以就想干脆仔细写一个算了。这是正好想到可以顺便学习一下rake,于是就动手啦。 网上关于rake的文章有不少。如果想快速上手,那么Rails Envy的Ruby on Rails Rake Tutorial是绝佳的入门教程;如果想从更高的角度理解rake,那么当然要看Martin Fowler大大 ...
用过Ext的人也许都会注意到,DataGrid的scroll行为只在当前DataGrid中有效。比如,一个带有纵向滚动条的DataGrid,如果我们把鼠标停留在DataGrid上并滚动滚轴,DataGrid中的条目就会随之滚动起来,一直到最后一条为止。这个时候,如果继续滚动,则不会有任何响应。整个网页也不会跟着滚动。在很多情况下,这样做是正确的,其目的是防止整个网页的滚动。因为当在DataGrid中滚动到最后一行时,用户很可能不希望整个网页随着鼠标滚轴滚动。 但是在有些情况下这一行为并不适用。例如在我的一个项目中,页面上并不会指定DataGrid的高度,而是让数据自动把整个DataGrid撑 ...
非常非常奇怪的问题。一开始在mac下面用standard rails bundle + ferret/acts_as_ferret,一切正常。后来想引入rmagick,于是使用rmagick bundle + ferrect/acts_as_ferret,结果报错,server启动不起来。mail list上去问,没人搭理咱。 索性换到windows上,顺便开始测试网页的浏览器兼容性。把代码commit到svn,然后找台新装的windows xp sp2,安装ruby、rails、ferret、rmagick,然后checkout代码。启动server,报错说no such file to ...
AllenYoung
  • 浏览: 128363 次
  • 来自: 上海交通大学软件学院
  • 详细资料
搜索本博客
最近加入圈子
存档
最新评论