我找不到任何合适的答案,因为 Regexp 代表正则表达式。这是一个例子:
test = Regexp.new("Hello")
它返回/Hello/
,但我对它的使用感到困惑。为什么不直接使用/Hello/
呢?谁能给我一个 Regexp.new()
函数的小例子?
最佳答案
假设您想让您的系统检测“以 DOG 开头并以 CAT 结尾的句子”。明显的正则表达式类似于 /DOG.+CAT\./
[1].
到目前为止,有效。但现在您希望能够增强系统,以便用户可以配置开始和结束词。您可以使用 //
语法和插值来实现:
/#{startWord}.+#{endWord}\./
但您也可以使用简单的字符串来完成:
Regex.new(startWord + ".+" + endWord + "\.")
化妆品。使用你最喜欢的。但是,还有一件事很重要。使用new
函数,您不仅可以传递一个参数,还可以传递更多 参数。参见 the docs .
因此,从您的观点来看,new
存在的主要 [2] 目的实际上是能够传递更多的参数,而不仅仅是一个。使用 //
你只能传递正则表达式[3]。使用 new
,您可以传递选项。
为清楚起见,一些细节被过度简化了。
[1] 它不是有效的“句子检测器”。它只是一些正则表达式来显示问题。
[2] 这不是主要目的。 new
是一个构造函数。它必须存在,否则我们将无法构造该对象。实际上,/blargh/
语法被翻译成一个new
调用。
[3] 实际上,使用 //
你也可以传递一些选项,比如 /CaSEiNseNsiTive/i
。但是,好吧,构造函数仍然更加灵活。
关于ruby - 什么时候使用 Regexp.new()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928667/