正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找其他字符串或字符串集合。
语法
正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示:
/pattern/ /pattern/im # 可以指定选项 %r!/usr/local! # 一般的分隔的正则表达式 实例 #!/usr/bin/ruby line1 = "Cats are smarter than dogs"; line2 = "Dogs also like meat"; if ( line1 =~ /Cats(.*)/ ) puts "Line1 contains Cats" end if ( line2 =~ /Cats(.*)/ ) puts "Line2 contains Dogs" end
这将产生以下结果:
Line1 contains Cats
正则表达式修饰符
正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。下标列出了 可能的修饰符:
就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。
# 下面匹配单个斜杠字符,不转义 %r|/| # Flag 字符可通过下面的语法进行匹配 %r[</(.*)>]i
正则表达式模式
除了控制字符,(+ ? . * ^ $ ( ) [ ] { } | \),其他所有字符都匹配本身。您可以通过在控制字符前放置一个反斜杠来对控制字符进行转义。
下表列出了 Ruby 中可用的正则表达式语法。
搜索和替换
sub 和 gsub 及它们的替代变量 sub! 和 gsub! 是使用正则表达式时重要的字符串方法。
所有这些方法都是使用正则表达式模式执行搜索与替换操作。sub 和 sub! 替换模式的第一次出现,gsub 和 gsub! 替换模式的所有出现。
sub 和 gsub 返回一个新的字符串,保持原始的字符串不被修改,而 sub! 和 gsub! 则会修改它们调用的字符串。
下面是一个实例:
#!/usr/bin/ruby phone = "2004-959-559 #This is Phone Number" # 删除 Ruby 的注释 phone = phone.sub!(/#.*$/, "") puts "Phone Num : #{phone}" # 移除数字以外的其他字符 phone = phone.gsub!(/\D/, "") puts "Phone Num : #{phone}"
这将产生以下结果:
Phone Num : 2004-959-559 Phone Num : 2004959559
下面是另一个实例:
#!/usr/bin/ruby text = "rails are rails, really good Ruby on Rails" # 把所有的 "rails" 改为 "Rails" text.gsub!("rails", "Rails") # 把所有的单词 "Rails" 都改成首字母大写 text.gsub!(/\brails\b/, "Rails") puts "#{text}"
这将产生以下结果:
Rails are Rails, really good Ruby on Rails
本文向大家介绍python正则表达式re模块详细介绍,包括了python正则表达式re模块详细介绍的使用技巧和注意事项,需要的朋友参考一下 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮。 正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊
本文向大家介绍详解js正则表达式语法介绍,包括了详解js正则表达式语法介绍的使用技巧和注意事项,需要的朋友参考一下 本文介绍了js正则表达式,具体如下: 1. 正则表达式规则 1.1 普通字符 字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。 举例1:表达式 "c",在匹配字符串
本文向大家介绍Python中正则表达式的详细教程,包括了Python中正则表达式的详细教程的使用技巧和注意事项,需要的朋友参考一下 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表
主要内容:语法,实例,正则表达式修饰符,正则表达式模式,正则表达式实例,字符,字符类,特殊字符类,重复,非贪婪重复,通过圆括号进行分组,反向引用,替换,锚,圆括号的特殊语法,搜索和替换,实例,实例正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合。 正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。 语法 正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模
我知道有很多类似的问题,但我在任何地方都找不到我的案例。 我试图在Ruby on Rails用户模型中写一个全名正则表达式。它应该验证名字和姓氏是否填充了一个空格。这两个名字都应该包含至少两个字符(例如:马丽)。 作为一个奖励,但不是必须的,我想修剪空白到一个字符的情况下,用户将错误地输入一个以上的空白(例如:李 这对我有效,但是不检查每个名字的最少2个字符(例如:Peter P现在是正确的)。这
2.1 原子 原子是正则表达式中最基本的组成单位,每个正则表达式中至少包含一个原子。 常见的原子类型有: 普通字符作为原子 如:a b c 字母 非打印字符作为原子 如:\n \t 通用字符作为原子 如:\d \D \w \W \s \S 原子表 如:多个原子拼接在一起 非打印字符: 字符 描述 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须