On Tue, Jan 08, 2002 at 08:20:10PM -0800, Yitzchak Scott-Thoennes wrote:
> Now that someone has braved removing the quotes in the regex (which
> I was hoping would happen) I'll post my solution that does it the
> long way:

That's the way I went as well, although it makes some complications for the
rest of the solution.


> 82:
> -nl $,=":";print map/^"(.*)"$/?$1:$_,/\s*("[^"]*"(?=[\s#]|$)|[^\s#]+)\s*(?:#.*)?/g
> 
> This should be easily beatable.

Here's my current solution, at 64:

-pl $_=join':',grep defined,/"([^"]*)"(?![^\s#])|([^\s#]+)|#.*/g

Originally I had $_.0 instead of defined, but I realized that that skips
empty fields, i.e. "".  Is there a shorter way to test for defined?

BTW, (?=\s|#|$) is shorter than (?=[\s#]|$).


Ronald

Reply via email to