【问题标题】:Finding a partial string match amongst similar variants [duplicate]在相似变体中查找部分字符串匹配[重复]
【发布时间】:2021-01-26 19:52:27
【问题描述】:

我正在循环浏览一系列基于字符串的歌曲标题。我的目标是找出我的基本标题是否存在于数组相同的标题中,但可能有/附加的字符。我目前使用的几种技术遇到了一些问题。使用includes? 我必须同时测试两种方式:

"The Girl Is Mine (Paul McCartney)".downcase.include? "The Girl Is Mine" || "The Girl Is Mine".downcase.include? "The Girl Is Mine (Paul McCartney)"

我遇到了match?,但是一旦添加了额外的字符,事情就不起作用了。

"The Girl Is Mine".match? /The Girl Is Mine (feat. Paul McCartney)/i
=> false

目标是找到字符的开始序列,不区分大小写:"The Girl Is Mine"。我真的不需要任何复杂的东西,所以如果这可以在没有算法的情况下完成,我会全力以赴。如果不是,我仍然全神贯注。

【问题讨论】:

  • 转义特殊字符。
  • @WiktorStribiżew 我不同意这个骗局。提问者并不是专门在正则表达式中嵌入字符串,他们正在寻找一些更通用的基于字符串的搜索功能(可能仍然会因为过于宽泛而关闭它)
  • @Max 请参阅“一旦额外的字符进来,事情就不起作用了” - 正则表达式字符串包含括号和点,这些是特殊的正则表达式元字符,这些是问题的根本原因。副本很好,我添加了另一个解释哪些字符必须在正则表达式中转义。
  • @WiktorStribiżew 正则表达式在这种情况下毫无意义。 Ruby 可以显式地检查子字符串而无需构造子字符串。我认为提问者很困惑,因为即使没有特殊字符妨碍,他们似乎也不知道应该匹配哪种字符串(请参阅我的回答)
  • @Max 那么如果已经有stackoverflow.com/questions/8258517/…,为什么还要另一个答案?

标签: regex ruby string


【解决方案1】:

如果您真的想使用 RegEx 执行此操作,您似乎缺少匹配实际搜索词之前和之后的任何内容的通配符。

"The Girl Is Mine (Paul McCartney)".match(/.*The girl is mine.*/i)

https://regex101.com/r/aGTEmQ/1

【讨论】:

    猜你喜欢
    • 2022-08-11
    • 2014-09-04
    • 2016-03-07
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多