我需要在Ruby正则表达式找到一个C指令之前的评论。
例如,我有这个文件example.c
/*
* COMMENT NUMBER 1
*/
x = rb_define_class_under (foo, "MyClassName1", bar);
/*
* COMMENT NUMBER 2
*/
y = rb_define_class_under (foo, "MyClassName2", bar);
/*
* COMMENT NUMBER 3
*/
z = rb_define_class_under (foo, "MyClassName3", bar);
然后,我有我的ruby解析器parser.rb
是这样的:
content = File.open('example.c').read
if content =~ /((?>\/\*.*?\*\/))([\w\.\s]+\s=\s)?rb_define_class_under.*?"(MyClassName1)"/m
puts "Comment number 1 is:"
puts $1
end
if content =~ /((?>\/\*.*?\*\/))([\w\.\s]+\s=\s)?rb_define_class_under.*?"(MyClassName2)"/m
puts "Comment number 2 is:"
puts $1
end
if content =~ /((?>\/\*.*?\*\/))([\w\.\s]+\s=\s)?rb_define_class_under.*?"(MyClassName3)"/m
puts "Comment number 3 is:"
puts $1
end
现在我期望的输出是这样的:
Comment number 1 is:
/*
* COMMENT NUMBER 1
*/
Comment number 2 is:
/*
* COMMENT NUMBER 2
*/
Comment number 3 is:
/*
* COMMENT NUMBER 3
*/
但我得到:
Comment number 1 is:
/*
* COMMENT NUMBER 1
*/
Comment number 2 is:
/*
* COMMENT NUMBER 1
*/
Comment number 3 is:
/*
* COMMENT NUMBER 1
*/
任何想法? 什么是正确的正则表达式来获得预期的输出?