#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
# 正则表达式
str1 = "Cats are smarter than dogs"
str2 = "Dogs also like meat"
# => 正则表达式从字面上看是一种介于 斜杆之间 或介于跟在 %r 后的任义分隔符之间的模式
if ( str1 =~ /Cats(.*)/ ) then puts "Str1 contains Cats" end
# => 这在描述包含大量不想转义的斜杆字符时非常有用.
if ( str2 =~ %r!Dogs(.*)! ) then puts "Str2 contains Dogs" end
# 正则表达式修饰符
# => 正则表达式从字面上看可能包含一个可选的修饰符, 用于控制各方面的匹配.
# => 修饰符在第二个斜杆字符后指定, 下面列出可能的修饰符:
# => 修饰符 描述
# => i 当匹配文本时忽略大小写.
# => o 只执行一次 #{} 插值, 正则表达式在第一次时就进行判断.
# => x 忽略空格, 允许在整个表达式中放入空白符和注释
# => m 匹配多行, 把换行字符识别为正常字符.
# => u,e,s,n 把正则表达式解释为 Unicode(UTF-8)、EUC、SJIS 或 ASCII. 如果没有指定修饰符, 则认为正则表达式使用的是源编码.
# => 正则表达式模式
# => 除了控制字符, ( + ? . * ^ $ () [] {} | \ ), 其他所有字符都匹配本身.
# => 你可以在控制字符前放置一个反斜杆来控制字符进行转义.
# => 下面列出了 Ruby 中可用的正则表达式语法.
# => 模式 描述
# => ^ 匹配行的开头.
# => $ 匹配行的结尾.
# => . 匹配除了换行符之外的任意单字符. 使用 m 选项时, 他也可以匹配换行符.
# => [...] 匹配在方括号中的任意单字符.
# => [^...] 匹配不在方括号中的任意单字符.
# => re* 匹配前面的子表达式零次或多次.
# => re+ 匹配前面的子表达式一次或多次.
# => re? 匹配前面的子表达式零次或一次.
# => re{n} 匹配前面的子表达式 n 次.
# => re{n,} 匹配前面的子表达式 n 次或 n 次以上.
# => re{n, m} 匹配前面的子表达式至少 n 次至多 m 次.
# => a|b 匹配 a 或 b.
# => (re) 对正则表达式进行分组, 并记住匹配文本.
# => (?imx) 暂时打开正则表达式内的i、m 或 x 选项. 如果在圆括号中, 则只影响圆括号内的部分.
# => (?-imx) 暂时关闭正则表达式内的i、m 或 x 选项. 如果在圆括号中, 则只影响圆括号内的部分.
# => (?: re) 对正则表达式进行分组, 但不记住匹配文本.
# => (?imx: re) 暂时打开圆括号内的i、m 或 x 选项.
# => (?-imx: re)暂时管不圆括号内的i、m 或 x 选项.
# => (?#...) 注释.
# => (?=re) 使用模式指定位置. 没有范围.
# => (?!re) 使用模式的否定指定位置. 没有范围.
# => (?>re) 匹配无回溯的独立模式.
# => \w 匹配单词字符.
# => \W 匹配非单词字符.
# => \s 匹配空白字符. 等价于 [\t\n\r\f].
# => \S 匹配非空白字符.
# => \d 匹配数字. 等价于 [0-9]
# => \D 匹配非数字.
# => \A 匹配字符串的开头.
# => \z 匹配字符串的结尾.
# => \Z 匹配字符串的结尾. 如果存在换行符, 则只匹配到换行符之前.
# => \G 匹配最后一个匹配完成的点.
# => \b 当在括号外时匹配单词边界, 当在括号内时匹配退格键(0x08).
# => \B 匹配非单词边界.
# => \n,\t,etc. 匹配换行符、回车符、制表符等等
# => \1...\9 匹配第 n 个分组子表达式.
# => \10 如果已匹配过, 则匹配第 n 个分组子表达式. 否则指向字符编码的八进制表示.
网友评论