Matthew Seaman wrote:
Drew Tomlinson wrote:
Matthew Seaman wrote:

% perl -p -e 's/cn=([^ ,]+) ([^,]+),/cn=$2 $1,/' < foo.txt

I still don't really understand *why* the above works but I'm trying to pick it apart now.

The RE breaks down like this:

/cn=([^ ,]+) ([^,]+),/
cn=                     Match literal text 'cn='
   (                    capture #1 begin
[^ ,] Character class: anything that is not space or comma
         +              At least one of the above
          )             end capture #1
                        Match a literal space
            (           capture #2 begin
             [^,]       Character class: anything that is not a comma
                 +      At least one of the above
                  )     end capture #2
                   ,    Match literal comma

Thank you for that. You've shown me a new way to look at things. Instead of worrying about what I want to match, determine what marks the beginning and end of what I want to match and use negated character classes to find those end points. I think my regex writing has just gotten better. :)

Cheers,

Drew


--
Be a Great Magician!
Visit The Alchemist's Warehouse

http://www.alchemistswarehouse.com

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to