gpt4 book ai didi

ruby - 什么时候使用 Regexp.new()?

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:21 28 4
gpt4 key购买 nike

我找不到任何合适的答案,因为 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com