这个正则表达式如何工作?

时间:2014-03-21 07:19:45

标签: ruby-on-rails ruby ruby-on-rails-3

"Rubymonk Is Pretty Brilliant".match(/ ./, 9)

如何根据此正则表达式计算答案“P”?

  • 在字符串
  • 上使用match方法
  • 传递两个参数,一个正则表达式和字符串中的位置以开始搜索。
  • 返回字符'P'

2 个答案:

答案 0 :(得分:5)

您从Rubymonk评分员发布的标准简洁地回答:

  

传递两个参数,一个正则表达式和位置   字符串开始搜索

但是让我们更详细地研究一下。 match正在传递两个参数:

  • / ./,正则表达式
  • 9,字符串
  • 中的起始位置

正则表达式告诉我们,我们正在查找空格(),后跟任何字符(.)。

起始位置告诉我们从位置9(I)开始。因此,我们不是将该正则表达式应用于" Rubymonk非常辉煌",而是将其应用于"非常辉煌"。

在字符串" Is Pretty Brilliant",我们在哪里遇到一个空格,然后是另一个角色? " [P] retty Brilliant",对吗?因此,match会找到P的结果(' s空格-P,匹配正则表达式,而不仅仅是P.)

要更清楚地看到这一点并进一步尝试使用正则表达式,您可以使用Rubular在irb会话或浏览器中进行尝试。

答案 1 :(得分:0)

(只需google for RegEx + ruby​​,你会找到正则表达式语法的解释)

/ ANYTHING-HERE /

将在文中寻找任何内容。

在你的例子中它是(/。/,9):

/ SPACE DOT /

所以它会寻找空格,然后是单个字符(Dot - >单个字符)。

9将是"我"从字符串。这不是空间,所以它会在2个字符上正确。会找到空间,然后会找到单个字符" P"。

结果就是这样。