Ruby Regexp:单个正则表达式与new和union之间的区别

Ruby Regexp:单个正则表达式与new和union之间的区别,第1张

概述我简化了这些例子.假设我有一个包含正则表达式代码的字符串.我希望正则表达式匹配一个文字点,因此我希望它是: \. 所以我创建了以下Ruby字符串: "\\." 但是,当我与Regexp.union一起使用它来创建我的正则表达式时,我得到了这个: irb(main):017:0> Regexp.union("\\.")=> /\\\./ 这将匹配斜线后跟一个点,而不只是一个点.将之前的结果与此进行 我简化了这些例子.假设我有一个包含正则表达式代码的字符串.我希望正则表达式匹配一个文字点,因此我希望它是:

\.

所以我创建了以下Ruby字符串:

"\."

但是,当我与Regexp.union一起使用它来创建我的正则表达式时,我得到了这个:

irb(main):017:0> Regexp.union("\.")=> /\\./

这将匹配斜线后跟一个点,而不只是一个点.将之前的结果与此进行比较:

irb(main):018:0> Regexp.new("\.")=> /\./

这给了我想要的正则表达式但没有所需的联合.

你能解释为什么Ruby会像那样行事以及如何正确结合正则表达式吗?利用的上下文是导入描述正则表达式的JsON字符串并在Ruby中将它们联合起来.

解决方法 将字符串传递给Regexp.union旨在从字面上匹配该字符串.没有必要逃避它,Regexp.escape已在内部调用.

Regexp.union(".")#=> /\./

如果要将正则表达式传递给Regexp.union,请不要使用字符串:

Regexp.union(Regexp.new("\."))#=> /\./
总结

以上是内存溢出为你收集整理的Ruby Regexp:单个正则表达式与new和union之间区别全部内容,希望文章能够帮你解决Ruby Regexp:单个正则表达式与new和union之间的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存