Ruby 正则表达式
正则表达式 是一个定义搜索模式的字符序列,主要用于字符串的模式匹配。Ruby正则表达式即Ruby regex的简称,可以帮助我们在字符串中找到特定的模式。Ruby regex的两个用途是验证和解析。Ruby regex也可以用来验证一个电子邮件地址和一个IP地址。Ruby regex表达式是在两个正斜杠之间声明的。
语法
# finding the word 'hi'
"Hi there, i am using gfg" =~ /hi/
如果存在’hi’这个词,这将返回该词第一次出现的索引,否则将返回 ‘nil ‘。
检查一个字符串是否有一个regex
我们也可以通过使用 match 方法来检查一个字符串是否有一个regex。下面的例子可以让我们理解。
例子:
# Ruby program of regular expression
# Checking if the word is present in the string
if "hi there".match(/hi/)
puts "match"
end
输出
match
检查一个字符串是否有一些字符集
我们可以使用一个 字符集 s,让我们定义一个字符范围进行匹配。例如,如果我们想搜索元音,我们可以使用 [aeiou] 进行匹配。
例子 :
# Ruby program of regular expression
# declaring a function which checks for vowel in a string
def contains_vowel(str)
str =~ /[aeiou]/
end
# Driver code
# Geeks has vowel at index 1, so function returns 1
puts( contains_vowel("Geeks") )
# bcd has no vowel, so return nil and nothing is printed
puts( contains_vowel("bcd") )
输出
1
不同的正则表达式
有不同的简短表达式用于指定字符范围。
- \ w 相当于 [0-9a-zA-Z_ ] 。
- \d与 [0-9] 相同
- \` s 匹配 白色空间
- \ W 任何 不在[0-9a-zA-Z_]中 的东西。
- \ D 任何不属于数字的东西
- \ S 任何 不是空格 的东西
- 点字符 … 匹配所有内容,但不匹配新行。如果你想搜索 . 字符,那么你必须转义它。
例子 :
# Ruby program of regular expression
a="2m3"
b="2.5"
# . literal matches for all character
if(a.match(/\d.\d/))
puts("match found")
else
puts("not found")
end
# after escaping it, it matches with only '.' literal
if(a.match(/\d\.\d/))
puts("match found")
else
puts("not found")
end
if(b.match(/\d.\d/))
puts("match found")
else
puts("not found")
end
输出
match found
not found
match found
雷格斯的修饰语
对于匹配多个字符,我们可以使用修饰语。
- + 是指 1个或更多的 字符
- ***** 是指 0个或更多的 字符
- ? 是指 0或1个字符
- {x, y} 如果是指 x和y之间的字符数
- i 是指在匹配文本时忽略大小写。
- x 表示忽略空格,允许在正则表达式中使用注释。
- m 表示匹配多行,将换行符作为正常字符识别。
- u,e,s,n 表示将正则表达式解释为Unicode (UTF-8), EUC, SJIS, 或ASCII。