re = /(?<!\.)(\b[a-zA-Z_]+[a-zA-Z0-9_]+)\.[a-zA-Z0-9_\.]+/
str = 'module.func()
module.class.func()
module.module.class . func()
__module__.module.class.func()
module.constant
module.class.constant
module.class.class.constant
module11.func()
modu123le.class.func()
modu123le.module.class.func()
modu123le.module123.class.func()
"1 if module11.func(col) == \'A\' else 3"
"1 if module11.func(col) == \'A\' else ( _module.constant == \'B\') else 34"
"module.func()"
1.0
1module.func()
2module.class.func()
col.upper() ##No way to know whether col is a module
module . func() ##Need to remove spaces before and after .
module . class . func()
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html