Ruby 正则表达式


Ruby 正则表达式

概述

正则表达式是一种用于匹配字符串的工具,也是Ruby内置的一个强大的功能。它使用一种类似于文本的模式来描述待匹配字符串,可以检测一个字符串是否符合某种模式,或者从字符串中提取特定的内容。

基础语法

Ruby正则表达式的基本语法有两种方式,一种是使用斜杠(/)包含正则表达式模式,另一种是使用 %r{} 包含正则表达式模式。例如:

# 使用 /
str = "hello world"
if /world/ =~ str
  puts "Match"
else
  puts "No match"
end

# 使用 %r{}
str = "hello world"
if %r{world} =~ str
  puts "Match"
else
  puts "No match"
end

Ruby正则表达式还支持选项,可以使用 i, m, x 选项标记。例如,下面的正则表达式表示匹配字符串中的 “world”:

str = "hello world"
if /world/i =~ str
  puts "Match"
else
  puts "No match"
end

其中 i 标记表示忽略大小写匹配。

正则表达式元字符

正则表达式中有很多元字符,用于表示特殊的字符或字符集。下面是一些常见的正则表达式元字符:

| 元字符 | 描述 | |: — :| —-| | . | 匹配任意字符 | | [] | 匹配方括号内的任意一个字符 | | [^] | 匹配除方括号内的字符以外的任意一个字符 | | \d | 匹配数字字符 | | \D | 匹配非数字字符 | | \w | 匹配任何字母、数字和下划线字符 | | \W | 匹配除字母、数字和下划线以外的任何字符 | | \s | 匹配空白字符 | | \S | 匹配非空白字符 | | | | 逻辑或操作符,匹配左右两边的任意一个表达式 | | ^ | 匹配字符串的开头 | | $ | 匹配字符串的结尾 | | * | 匹配前面的子表达式零次或多次 | | + | 匹配前面的子表达式一次或多次 | | ? | 匹配前面的子表达式零次或一次 | | {n} | 匹配前面的子表达式n次 | | {n,} | 匹配前面的子表达式至少n次 | | {n,m} | 匹配前面的子表达式至少n次,但不能超过m次 |

正则表达式使用方法

Ruby正则表达式可以用于匹配、替换、分割等操作。下面是一些使用 Ruby 正则表达式的例子:

匹配

匹配可以用 =~ 或者 match 方法。例如:

str = "hello world"
if str =~ /world/
  puts "Match"
else
  puts "No match"
end

str = "hello world"
if str.match(/world/)
  puts "Match"
else
  puts "No match"
end

替换

字符串中的特定部分可以使用 gsub 或者 sub 方法进行全部替换或者第一次替换。例如:

str = "hello Jhon"
new_str = str.gsub(/Jhon/, "Mary")
puts new_str // "hello Mary"

分割

字符串可以使用正则表达式来分割成数组。例如:

str = "hello,world"
arr = str.split(/[,\s]/)
puts arr // ["hello", "world"]

总结

本文介绍了 Ruby 正则表达式的基本语法、正则表达式元字符以及如何使用 Ruby 正则表达式进行匹配、替换和分割操作。掌握这些知识,可以帮助我们更加高效地进行字符串操作。