【问题标题】:Ruby Match - escape a string with special characters [duplicate]Ruby Match - 用特殊字符转义字符串[重复]
【发布时间】:2014-01-14 16:15:01
【问题描述】:

我编写了以下代码来匹配我的属性文件中的服务名称:-

service = properties.match(/^com\.google\.([#{serviceName}]+)\.public$/)

当我给出任何 serviceName 时,此代码可以正常工作,但如果 serviceName 之间有 - 则失败

例如 - common-api

错误:

empty range in char class: /^com\.google\.([common-api]+)\.public$/ (SyntaxError)

知道如何从正则表达式评估中转义整个字符串吗?

【问题讨论】:

  • 你为什么要用你的名字字符串的字符来匹配一个字符类?
  • 快速谷歌搜索返回this
  • 您在寻找Regexp::escape吗?

标签: ruby regex regex-lookarounds


【解决方案1】:

你可能想要Regexp.escape:

service = properties.match(/^com\.google\.(#{Regexp.escape(serviceName)})\.public$/)

此外,您在包含serviceName 的地方加上了[...]+,这意味着[...] 中的这个字符列表中有多个字符。

例如此正则表达式 [commonapi]+ 接受 moconaipimdconn,或者实际上包含您实际想要捕获的服务名称中的某些字符的任何长度字符串。

【讨论】:

  • 仍然返回同样的错误...
  • 更新了我的答案,我没有注意到您有一个包含[...]+serviceName,这是一个额外的问题。
  • 嗯,解决了这个问题。谢谢!!
猜你喜欢
  • 2011-05-07
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2020-05-06
相关资源
最近更新 更多