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 正则表达式进行匹配、替换和分割操作。掌握这些知识,可以帮助我们更加高效地进行字符串操作。