Ruby条件正则表达式标记错误:无效的条件模式(SyntaxError)

时间:2019-02-14 14:40:31

标签: regex ruby

我需要一个能够理解变量和数组并提取数据类型,变量名称和数组大小(一维和二维大小)的正则表达式。

字符串示例:

first_string = "extern float variable;"
second_string = "extern uint8 array[5];"
thirds_string = "extern int16 map[10][4];"

我的红宝石正则表达式如下:

@regex = /^extern\s+(\w+)\s+(\w+\d*)(?(\[(\d*)\])\[(\d*)\];|;).*$/i

我如何捕获数据:

# line is a string
type, name, first_idx, second_idx = line.scan(@regex).flatten

我希望看到的:

first_string -> type(float), name(variable), first_idx(nil or ''), second_idx(nil or '')
second_string -> type(uint8), name(array), first_idx(5), second_idx(nil or '')
third_string -> type(int16), name(map), first_idx(10), second_idx(4)

正则表达式的第一部分效果很好,但是当我添加条件表达式以找到带有数字的[]时,我得到了错误。

我还尝试使用:/^extern\s+(\w+)\s+(\w+\d*)\[*(\d*)\]*\[*(\d*)\]*;.*$/i,但是[]的匹配仅在最后一个正则表达式中发生。

0 个答案:

没有答案