拿这个字符串。
a = "real-ab(+)real-bc(+)real-cd-xy"
a.scan(/[a-z_0-9]+\-[a-z_0-9]+[\-\[a-z_0-9]+\]?/)
=> ["real-ab", "real-bc", "real-cd-xy"]
但是下一个字符串怎么没有得到什么呢?
a = "real-a(+)real-b(+)real-c"
a.scan(/[a-z_0-9]+\-[a-z_0-9]+[\-\[a-z_0-9]+\]?/)
=> []
我怎么能拥有它,所以两个字符串输出到一个3计数数组?
答案 0 :(得分:3)
您混淆了括号(用于分组)和方括号(用于字符类)。你想要
a.scan(/[a-z_0-9]+-[a-z_0-9]+(?:-[a-z_0-9]+)?/)
(?:...)
会创建一个非捕获组,这是您需要的。
此外,除非您想明确禁止使用大写字母,否则可以将\w
写为“字母,数字或下划线”的简写:
a.scan(/\w+-\w+(?:-\w+)?/)
答案 1 :(得分:0)
a.scan(/[a-z_0-9]+\-[a-z_0-9]+/)
答案 2 :(得分:0)
为什么不简单?
a.scan(/[a-z_0-9\-]+/)