怎么样使用Ruby程序中正则表达式

Python021

怎么样使用Ruby程序中正则表达式,第1张

(1)创建:简单地用//即可创建,也可也用re = Regexp.new("正则表达式"),创建

(2)匹配:正则表达式 =~ 字符串,匹配成功返回字符串位置,不成功返回nil,可也用!~表示不匹配

(3)正则表达式选项:imx,i:忽略大小写、m可以匹配多行,x正则表达式中可以有空格、#注释,不会当成要匹配的内容。如 /NiHao/i =~ "nihao" 返回0

(4)捕获:用(),打印第几个捕获可以用 p $1,$2……,$&表示匹配整个正则表达式的字串部分。&` 返回原字符串匹配部分之前的字符串,&' 返回原字符串中匹配部分之后的字符串

(5)正则替换:sub替换一次,gsub全部替换。scan不替换,但是可以像gsub一样找到全部能匹配的部分,用来对其进行处理

通配符匹配规则:

* :任意数量的字符

?:任何单个字符

正则 匹配规则:

*                前面元素出现0次以上

.                匹配任何单个字符

?                前面元素出现0次或1次

+                前面元素出现1次以上

^                表示开头。

$                表示结尾。

.*                表示0个以上的任意字符。

.+                表示1个以上的任意字符。

[ ]              范围描述符。[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)(在范围描述符内部时)

{m,n}            前面元素最少出现m次,最多出现n次

|                或者,如.(你|我|他),爱你、爱我、爱他这三个词语都会被匹配到(爱对应括号前面那个点,你我他则是括号里的或)

( )              子文本,如(\d+)([你|我|他]),取子匹配文本(1,1)取到的就是第一个圆括里面的内容。

其他字符          该字符本身

您可以将正则匹配理解为特殊的关键词搜索,您可以使用某些符号来代替一个或多个未知的内容。

第一个*? 是连起来用的,表示非贪婪匹配,就是尽量少地匹配

第二个的正则是这样用的,\z的意思是 字符串结尾(类似$,但不受处理多行选项的影响)

time\z