gpt4 book ai didi

ruby rspec 和字符串比较

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:51 26 4
gpt4 key购买 nike

我不是 ruby​​ 专家,这可能看起来是个愚蠢的问题……但我对我在 RSpec 匹配器中发现的一个奇怪的东西(我认为)非常好奇,这个匹配器叫做 match。

您知道 match 接受字符串或正则表达式的输入。示例:

"test".should match "test" #=> will pass
"test".should match /test/ #=> will pass

当您在输入字符串中插入特殊的正则表达式字符时,奇怪的事情就开始了:

"*test*".should match "*test*" #=> will fail throwing a regex exception

这意味着(我认为)输入字符串被解释为正则表达式,那么我应该转义特殊的正则表达式字符以使其工作:

"*test*".should match "\*test\*" #=> will fail with same exception
"*test*".should match /\*test\*/ #=> will pass

从这个基本测试中,我了解到 match 将输入字符串视为正则表达式,但它不允许您转义特殊的正则表达式字符。

我说的对吗?这不是一个单一的行为吗?我的意思是,它是一个字符串或一个正则表达式!


回答后编辑:

跟随 DigitalRoss(右)回答以下测试通过:

"*test*".should match "\\*test\\*" #=> pass
"*test*".should match '\*test\*' #=> pass
"*test*".should match /\*test\*/ #=> pass

最佳答案

您看到的是字符串与正则表达式中反斜杠转义字符的不同解释。在软 (") 引号字符串中,\* 变为 *,但 /\*/ 实际上是一个反斜杠后跟一个星号。

如果您对字符串对象使用硬引号 (') 将反斜杠字符加倍(尽管仅适用于字符串),那么您的测试应该会产生相同的结果。

关于ruby rspec 和字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5772122/

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