Ruby 正则表达式

17 Mar 2025 | 阅读 2 分钟

正则表达式也被拼写为 regexp,它包含一个正则表达式,用于匹配字符串的模式。在 Ruby 中,模式写在正斜杠字符之间。它们描述了字符串的内容。Ruby 正则表达式与 Perl 正则表达式更相似。

语法

Ruby 1.9 使用 Oniguruma 正则表达式库,但 Ruby 2.0 使用 Onigmo 正则表达式库。Onigmo 是 Oniguruma 的一个分支库,添加了一些新功能。


=∽ 和 #match 运算符

模式匹配是通过使用 =∽ 和 #match 运算符来实现的。

=∽

这是基本的匹配模式。这里使用了两个操作数。一个是一个正则表达式,另一个是一个字符串。正则表达式与字符串匹配。

如果找到匹配项,则运算符返回第一个匹配项的索引,否则返回 nil。

示例

Ruby Regular expression 1


#match

此运算符在匹配时返回一个 MatchData 对象,否则返回 nil。

Ruby Regular expression 2


元字符和转义

元字符在模式中具有特定的含义。为了匹配一个字符串,它们需要用反斜杠 (\\\) 或转义。一些元字符是 (,), (.), (?), (+), (-), (*), [,], {,}。

它在匹配时返回特定的字符串,否则返回 nil。

示例

Ruby Regular expression 3


字符类

元字符在模式中具有特定的含义。为了匹配一个字符串,它们需要用反斜杠 (\\\) 或转义。

字符类用方括号括起来。

[ab]

这里,[ab] 表示 a 或 b。它与 /ab/ 相反,表示 a 和 b。

示例

Ruby Regular expression 4

[a-d]

这里,[a-d] 等同于 [abcd]。连字符 (-) 字符类表示字符的范围。

示例

Ruby Regular expression 5

[^a-d]

符号 ^ 表示范围中不存在的任何其他字符。

示例

Ruby Regular expression 6


重复

到目前为止定义的字符匹配单个字符。在重复元字符的帮助下,我们可以指定它们需要出现的次数。这些元字符称为 量词。

  • *: 零次或多次
  • +: 一次或多次
  • ?: 零次或一次 (可选)
  • {n}: 恰好 n 次
  • {n, }: n 次或更多次
  • {,m}: m 次或更少次
  • {n,m}: 至少 n 次,最多 m 次

示例

Ruby Regular expression 7


Grouping

分组使用括号将术语组合在一起。将术语组合在一起使它们成为一个整体。

示例

Ruby Regular expression 8

在此示例中,第一个模式匹配一个元音后跟两个字符。

在第二个模式中,它匹配一个元音后跟一个单词字符,两次。

(?:..)

此表达式提供分组而不捕获。它组合术语而不创建反向引用。

示例

Ruby Regular expression 9