【发布时间】: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/…,为什么还要另一个答案?