我有一条消息(m)说“修复#1〜需要验证”。
我想识别所有附加“#”的数字。所以,我扫描文本:
issue = m.scan(/[^\#][0-9]+/)
但是issue
是空的,除非 # 之后的数字是两位数或 > 9,这意味着如果消息是“修复 #10 ~需要验证”,那么我的问题是 10。
我在这里做错了什么?
我有一条消息(m)说“修复#1〜需要验证”。
我想识别所有附加“#”的数字。所以,我扫描文本:
issue = m.scan(/[^\#][0-9]+/)
但是issue
是空的,除非 # 之后的数字是两位数或 > 9,这意味着如果消息是“修复 #10 ~需要验证”,那么我的问题是 10。
我在这里做错了什么?
您正在否定字符类,因此您的正则表达式匹配(任何不是#)后跟一个或多个数字。两位数字适合这个,但以# 为前缀的一位数字不适合。
这是你应该做的:
issue = m.scan(/#[0-9]+/)
或者(归功于这个答案):
issue = m.scan(/#\d+/)
"fixes #1 ~needs #12verification" .scan(/#\d+/) #=> ["#1", "#12"]
去掉#号的方括号:
issue = m.scan(/^#[0-9]+/)