识别在Ruby中附加“#”的所有数字

时间:2013-04-30 16:59:49

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

我有一条消息(m)说“修复#1〜需要验证”。

我想识别附加'#'的所有数字。所以,我扫描文本:

issue = m.scan(/[^\#][0-9]+/)

issue为空,除非#后面的数字是两位数或> 9意思是如果消息是“修复#10~需要验证”,那么我的问题是10。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

你正在否定字符类,所以你的正则表达式匹配(任何不是#的东西)后跟一个或多个数字。 2位数字符合这一要求,但以#为前缀的一位数字不符合。

这是你应该做的事情:

issue = m.scan(/#[0-9]+/)

或(信用this answer):

issue = m.scan(/#\d+/)

答案 1 :(得分:2)

"fixes #1 ~needs #12verification" .scan(/#\d+/) #=> ["#1", "#12"]

答案 2 :(得分:0)

从#符号中取出方括号:

issue = m.scan(/^#[0-9]+/)