0

我正在使用 Ruby 1.9.3。只是通过 Ruby 教程。现在我只是坚持一个正则表达式正在工作的声明,并且也给出了 put 。\/但与运营商逻辑混淆。

正则表达式-1

Today's date is: 1/15/2013.(细绳)

(?<month>\d{1,2})\/(?<day>\d{1,2})\/(?<year>\d{4})(表达)

正则表达式-2

s = 'a' * 25 + 'd' 'a' * 4 + 'c'(细绳)

/(b|a+)*\/ =~ s #=>( 表达)

现在无法理解\/=~运算符在 Ruby 中是如何工作的。

有人能帮我理解同样的吗?

谢谢

4

1 回答 1

2

\用作转义字符。在这种情况下,它用于指示下一个字符是正常字符,不应提供某些特殊功能。通常/将结束正则表达式,因为正则表达式由/. 但在前面/加上一个\基本上说“我不是告诉你在我使用这个时结束正则表达式/,我希望它作为正则表达式的一部分。”

正如李指出的那样,您的第二个正则表达式无效,特别是因为您从未以正确的/. 您转义最后一个/,使其只是一个纯文本字符,因此正则表达式挂起。这就像在做str = "hello

作为另一个例子,通常^在正则表达式中用于指示字符串的开头,但这样做\^意味着您只想使用^正则表达式中的字符。

=~说“正则表达式是否匹配字符串?” 如果有匹配,则返回匹配开始的索引,否则返回nil。有关详细信息,请参阅此问题

编辑:请注意,?<month>, ?<day>,?<year>东西是分组的。似乎您可以对正则表达式进行一些更新,请查看此附录以了解所有不同的特殊字符的作用。

于 2013-01-15T13:16:09.760 回答