📜  Ruby正则表达式

📅  最后修改于: 2021-01-08 13:20:07             🧑  作者: Mango

Ruby正则表达式

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

句法:

/search string/

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

=∽和#match运算符

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

=∽

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

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

例:

#比赛

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

元字符和转义符

元字符在模式中具有特定的含义。要匹配字符串,请使用反斜杠(\\\)或对其进行转义。一些元字符是(,),(。),(?),(+),(-),(*),[,],{,}。

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

例:

字符类

元字符在模式中具有特定的含义。要匹配字符串,请使用反斜杠(\\\)或对其进行转义。

字符类用方括号括起来。

[ab]

在此,[ab]表示a或b。 / ab /的对立表示a和b。

例:

[广告]

在此,[ad]等同于[abcd]。连字符(-)字符类表示字符范围。

例:

[^ ad]

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

例:

重复

到现在为止定义的字符都匹配一个字符。借助重复元字符,我们可以指定它们需要发生多少次。这些元字符称为量词。

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

例:

分组

分组使用括号将术语分组在一起。将术语归为一组。

例:

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

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

(?:..)

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

例: