分享

ruby系列教材(5):Regular Expressions

 漂在北方的狼 2006-12-06

1.只有脚本语言才会内建Regular Expressions ,Regular Expression 是一个用于匹配的模版(pattern),匹配对象是String

2.Regular Expression 用于处理与文本有关的工作

3.使用//建立Regular Expression,例如:/pattern/

4.注意,我要告诉你:Regular Expression 是 an object!

5.pattern为A or B的时候,使用/A|B/,例如 /perl|python/,注意,这里也可以写为 /P(erl|ython)/

6.正如上面说描述的,Regular Expression可以使用(),同时,它也可以使用算术表达式,当然所谓的算术表达式只是形式上带上算法运算符号,而不含有运算的意义,具体的意义被特殊定义了,下面引用《ruby users guide》中的说明:

正则表达式中有很多上述的具有特别意义的字符。首先是下列字符。
[ ]
范围描述符。[a-z]表示从a到z之间的任意一个。

----------------------------------------------------------------------------------------

\w
英文字母和数字。即[0-9 A-Z a-z]。
\W
非英文字母和数字
\s
空字符,即[\t\n\r\f]。
\S
非空字符。
\d
数字,即[0-9]。
\D
非数字。
\b
词边界字符(在范围描述符外部时)
\B
非词边界字符
\b
退格符(0x08)(在范围描述符内部时)

----------------------------------------------------------------------------------------

以上的表示一个字符

*
前面元素出现0次以上 (用于字符后)
+
前面元素出现1次以上 (用于字符后)
{m,n}
前面元素最少出现m次,最多出现n次 (用于字符后)
?
前面元素出现0次或1次 (用于字符后)
|
选择
( )
群组
其他字符
该字符本身

-----------------------------------------------------------------------------------------

 

*注意我前面提到的概念,Regular Expressions 是用于匹配字符串的,上面材料中提到:“元素”,其实也就是一个字符了

 

这里有必要做一个说明:

ruby里面上表的比如 \s 等被称之为:character classes,下面详细说几个,希望大家能举一反三

1)\s 表示了一个空字符,比如\n,\t,\r这样的转义字符(注意我要澄清大家的一个概念性问题,\n和a,b,c一样是一个字符)

2)\d表示任何一个整数,比如   /\d\d:\d\d:\d\d/   # a time such as 12:34:56

3)\w可以表示数字,注意是数字,而不是整数,确切的说是数字字符和英文字符

4)补充一个上面没有的 “.” 表示没有或者所有的字符串,注意是字符串

 

 

7.使用Regular Expressions

匹配操作符为:  =~

比如 p =~ /a/ 这里 =~会返回一个值,这个值是a在p中的位置,如果没有a就返回nil,注意当a出现在p的第一个位置的时候,=~返回0,if 0 ,ruby认为是真,这里和c/c++有所不同和java也不同,要注意。另外,所有比较运算,运算符都会返回一个值,用于在条件判断中控制程序流。

 

8.Regular Expressions使用举例

p = ‘ahibcd‘
line=0
if line=(p=~/hi/)
  puts line
end

 

结果为:1

 

用Regular Expressions 实现查找替换的功能:

line.sub(/Perl/, ‘Ruby‘)                    # replace first ‘Perl‘ with ‘Ruby‘

line.gsub(/Python/, ‘Ruby‘)            # replace every ‘Python‘ with ‘Ruby‘

line.gsub(/Perl|Python/, ‘Ruby‘)     # replace every occurrence of Perl and Python with Ruby

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多