re = /^(?=.*g)[fghlotu]{4,}$/m
str = '// SB from 2019-10-05
// centerLetter: g
// outerLetters: f,h,l,o,t,u
// wrong letters
bread
butter
bigger
ogogogx
xogogog
// too short
gut
log
fgt
// no center letter
trout
lotto
full
// tricky cases that should match (made up words)
ogogog
gogog
ogogo
oggoggo
ggogg
ggoo
oogg
// actual solutions
thoughtful
flog
fought
fugu
ghoul
glut
golf
goof
googol
goth
gout
guff
gulf
gull
logo
ought
outfought
outgo
outthought
though
thought
thug
tough
'
# 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