📅  最后修改于: 2023-12-03 15:04:57.404000             🧑  作者: Mango
/pattern/
%pattern%
# 使用/作分隔符
/hello/
# 使用%作分隔符
%hello%
在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)/
Ruby提供了一些正则表达式方法,以便我们能够将正则表达式应用于字符串,如下所示:
match
- 在字符串中查找匹配项scan
- 在字符串中查找所有匹配项sub
- 用另一个字符串替换匹配项gsub
- 用另一个字符串替换所有匹配项# 在字符串中查找匹配项
"hello world".match(/hello/)
# 在字符串中查找所有匹配项
"hello world".scan(/l/)
# 用另一个字符串替换匹配项
"hello world".sub(/hello/, "hi")
# 用另一个字符串替换所有匹配项
"hello world".gsub(/l/, "L")
在Ruby中,我们可以通过指定选项来修改正则表达式的行为,如下所示:
i
- 忽略大小写m
- 多行模式x
- 忽略正则表达式中的空格和注释# 忽略大小写
/hello/i
# 多行模式
/^hello/m
# 忽略空格和注释
/hello world/x