but with my csvs at least, whole-record matching usually just works.
Oops, I answered a question you didn't ask, but I'll leave the example there in case it helps someone.
To also sanitise payee names, it might look something like:
if
AMZN
AMAZON MKTPL
Amazon\.com
AMAZON-SERVICES-KI
CMX UNLIMITED
COMICS
account2 expenses:books/periodicals
description Amazon US | %description
if
BLANKSPACES
CULVERWORKS
account2 expenses:rent
description Blankspaces
That will be a lot of rules to maintain, if you want to do this consistently. Another option is to get data from a bank aggregator instead of directly from the bank; they usually do a certain amount of payee name cleanup for you.
Listing multiple names for a match is cheap and cheerful, I am with Simon on this: whenever I have something that slips the net, i just add a rule. I have maybe a couple of rules to add per month of transactions (unless I do something drastically different from my usual routine, but then it is basically expected)