📜  Ruby正则表达式(1)

📅  最后修改于: 2023-12-03 15:04:57.404000             🧑  作者: Mango

Ruby正则表达式

1. 什么是正则表达式
  • 正则表达式是一种文本模式,用于匹配字符串中的字符组合
  • 正则表达式通常包含普通字符和特殊字符
2. Ruby中的正则表达式表示方法
  • 正则表达式被写在斜杠之间:/pattern/
  • 如果正则表达式包含斜杠,则可以使用其他分隔符,如:%pattern%
# 使用/作分隔符
/hello/

# 使用%作分隔符
%hello%
3. Ruby正则表达式元字符

在Ruby中,正则表达式中的一些字符被定义为特殊的元字符,它们具有特定的含义,如下所示:

  • . - 匹配除了换行符以外的任何字符
  • * - 匹配前一个字符0次或更多次
  • + - 匹配前一个字符1次或更多次
  • ? - 匹配前一个字符0次或1次
  • {n} - 匹配前一个字符n次
  • {n,} - 匹配前一个字符至少n次
  • {n,m} - 匹配前一个字符n到m次
  • [] - 匹配中括号内的任何一个字符
  • () - 捕获匹配的子表达式
# 匹配字符串中以hello开头的任意字符
/hello./

# 匹配字符串中出现0次或多次的fo字符
/fo*/

# 匹配字符串中出现1次或多次的ba字符
/ba+/

# 匹配字符串中含有abc或adc的字符
/a[bd]c/

# 捕获匹配的子表达式
/(hello)/
4. Ruby中的正则表达式方法

Ruby提供了一些正则表达式方法,以便我们能够将正则表达式应用于字符串,如下所示:

  • match - 在字符串中查找匹配项
  • scan - 在字符串中查找所有匹配项
  • sub - 用另一个字符串替换匹配项
  • gsub - 用另一个字符串替换所有匹配项
# 在字符串中查找匹配项
"hello world".match(/hello/)

# 在字符串中查找所有匹配项
"hello world".scan(/l/)

# 用另一个字符串替换匹配项
"hello world".sub(/hello/, "hi")

# 用另一个字符串替换所有匹配项
"hello world".gsub(/l/, "L")
5. Ruby中的正则表达式选项

在Ruby中,我们可以通过指定选项来修改正则表达式的行为,如下所示:

  • i - 忽略大小写
  • m - 多行模式
  • x - 忽略正则表达式中的空格和注释
# 忽略大小写
/hello/i

# 多行模式
/^hello/m

# 忽略空格和注释
/hello world/x
6. 参考文献