> However this line only prints 4 lines of empty text: > " -XThis -Xis -Xa -Xtest ".scan( /\s-X(.*?)/ ) { |x| puts x } > > Can someone explain this to me? The question-mark in (.*?) makes the capture "ungreedy". It matches as few characters as possible to make the entire regexp match. In this case, matching zero characters is a successful match, so that's what you get. (.*) is "greedy" and will match as many characters as possible. So if you use it here, it will eat everything up to the end of the line. You might prefer something like this: " -XThis -Xis -Xa -Xtest ".scan( /-X(\S+)/ ) { |x| puts x } \S+ matches one or more non-space characters in a greedy fashion, hence it will eat up to the first non-space character or end of line. HTH, Brian. -- Posted via http://www.ruby-forum.com/.