加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:13:31 所属栏目:百科 来源:网络整理
导读:我简化了这些例子.假设我有一个包含正则表达式代码的字符串.我希望正则表达式匹配一个文字点,因此我希望它是: . 所以我创建了以下Ruby字符串: "." 但是,当我与Regexp.union一起使用它来创建我的正则表达式时,我得到了这个: irb(main):017:0 Regexp.uni
我简化了这些例子.假设我有一个包含正则表达式代码的字符串.我希望正则表达式匹配一个文字点,因此我希望它是:

.

所以我创建了以下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("."))
#=> /./

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读