0

拿这个字符串。

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 计数数组中?

4

3 回答 3

3

您混淆了括号(用于分组)和方括号(用于字符类)。你要

a.scan(/[a-z_0-9]+-[a-z_0-9]+(?:-[a-z_0-9]+)?/)

(?:...)创建一个非捕获组,这是您在这里需要的。

此外,除非您想明确禁止大写字母,否则您可以写成\w“字母、数字或下划线”的简写:

a.scan(/\w+-\w+(?:-\w+)?/)
于 2012-04-28T21:52:00.050 回答
0
a.scan(/[a-z_0-9]+\-[a-z_0-9]+/)
于 2012-04-28T21:48:57.853 回答
0

为什么不简单呢?

a.scan(/[a-z_0-9\-]+/)
于 2012-04-28T21:52:53.830 回答