【发布时间】:2016-08-27 02:01:15
【问题描述】:
假设我有以下字符串:
str1 = "[1] : blah blah blah"
str2 = "[2] : Something"
str3 = "Nothing"
我编写了一个方法foo(str),它接受一个字符串作为参数,如果字符串以“[DIGIT]”开头,其中数字可以是任何自然数(1、2、3、4...),则应该返回true。所以str1 和str2 应该返回true。 str3 应该返回 false。
我无法找出匹配"[DIGIT]" 的正则表达式。 /[[\d]]/ 是我能想到的最好的,它不起作用,只匹配 "N]",错过了起始括号。试试看here。
目前该方法如下所示:
def foo(str)
str =~ /[[\d]]/
end
【问题讨论】:
-
你必须转义方括号,
\[\d\]应该匹配方括号内的数字 -
非常感谢。它有效:)
-
将来考虑在选择答案之前等待更长时间(也许 > 2 小时)。快速选择可能会阻止其他答案并使那些仍在准备答案的人短路。关键是不要着急。
-
还有更多。如果它必须位于字符串的开头,则需要在前面加上
^。那么正则表达式将是/^\[\d+\]/ -
@sin、
^和$是行 的开始和结束锚点,而\A和\z是开始和结束string 锚的结尾。虽然两者都可以用于单行字符串,但我认为在这种情况下使用后者更清楚。