Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Simple transformations can easily become complex to do with regex, so I've started using vim macros instead.


Regex don’t do transformations? All they can do is match strings.


If I have a list of names I’d like to reverse:

John Smith > Smith, John Anna Peterson > Peterson, Anna

I can write:

(.) (.)

And replace with:

\2, \1

Not sure if that’s part of some “official” regex spec but it works more or less everywhere.

(Of course if it was an actual list of names I’d have to be a lot more intelligent with double names etc.)


Almost. All regular expressions do is match strings and find the starts and ends of whole matches and match groups. And this is an important distinction since match group support adds quite a bit of complexity to the theory behind regular expressions and also increases their usefulness by quite a bit.

Regular expression libraries then often can use these boundaries, for the whole match and for groups, for transform the string (e.g. replacing what was matched by a group with some other content).


Regex grouping expressions along with find & replace enable transformations.


Transformation by substitution is part of most dialects of regex, in the form of capturing groups.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: