【问题标题】:Regexp in Ruby does not give the expected resultRuby 中的正则表达式没有给出预期的结果
【发布时间】:2016-01-19 12:58:09
【问题描述】:

我有一些字符串,例如 2015 - THIS Test2015 - THAT Test

我想拥有THIS TestTHAT Test 的部分所以我尝试了这个:

"2015 - THIS Test"[/((THIS|THAT)\s\.*)/]

但这只会给我THISTHAT

  • 为什么它会削减其余部分?
  • 如何正确获取所需的子字符串?

我不想仅仅依靠剪切前 7 个字符。

【问题讨论】:

  • 你逃脱了点。删除\
  • 哦哇...我正在搜索大约一个小时,谢谢!将此作为答案
  • 我有 :) 这与人们通常犯的错误完全相反:他们通常忘记转义一个特殊的元字符。这一次,反之亦然。
  • 我建议下次使用Rubular,因为它还有如何在Ruby中使用正则表达式的指南
  • 感谢您的建议,但我确实使用了 Rubular。它在那里工作,因为我没有逃脱点,但似乎我无法将它复制到我的脚本......

标签: ruby regex


【解决方案1】:

你转义了点,它失去了 除换行符之外的任何字符的含义,并开始表示文字 . 符号。 \.* 匹配零个或多个字面点。

删除\:

puts "2015 - THIS Test"[/((THIS|THAT)\s.*)/]
puts "2015 - THAT Test"[/((THIS|THAT)\s.*)/]

结果(见demo):

THIS Test
THAT Test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多