📜  ruby 非贪婪正则表达式 - Ruby (1)

📅  最后修改于: 2023-12-03 14:47:09.787000             🧑  作者: Mango

Ruby 非贪婪正则表达式

在 Ruby 中,正则表达式(Regular expression)是非常常用的工具之一。正则表达式可以用来匹配字符串中的内容,提取关键信息或者替换特定的字符等操作。

在某些情况下,我们需要使用非贪婪正则表达式,以防止匹配过程中出现的一些问题。本文将介绍什么是非贪婪正则表达式,以及如何在 Ruby 中使用。

什么是非贪婪正则表达式?

贪婪正则表达式(Greedy regular expression)指在匹配时,会尽可能多地匹配字符。例如,使用 .* 来匹配一个字符串时,它会一直匹配直到结束。

非贪婪正则表达式(Non-greedy regular expression)和贪婪正则表达式相反,它在匹配时会尽可能少地匹配字符。例如,使用 .*? 来匹配一个字符串时,它会尽可能地少匹配字符。

如何在 Ruby 中使用非贪婪正则表达式

在 Ruby 中,使用 ? 来表示非贪婪匹配。例如,要匹配一个字符串中的所有数字,可以使用下面的代码:

string = "1234 5678 9012"

string.scan(/\d+?/) do |match|
  puts match
end

输出:

1
2
3
4
5
6
7
8
9
0
1
2
总结

非贪婪正则表达式是一种很有用的工具,在某些情况下可避免贪婪匹配出现的一些问题。在 Ruby 中,使用 ? 来表示非贪婪匹配。