Associate an object with a regular expression in Python
You should be able to see that you do lambda u: data + [u] on all of the commands.
The exception to this is when you do u.replace('%23', '#', 1),
this can be replaced by urllib.unquote and will allow for more urls.

You should put base, commands and re into global scope.
If you also change the commands so that you don't use lambda's and just have the lists then you can get:

try:
    #Python2
    from urllib import unquote
except ImportError:
    #Python3
    from urllib.parse import unquote
import re

BASE = ['wget', '--content-disposition', '--continue', '--quiet']
COMMANDS = [
    (
        r'(https?://)?examplesite\.com/.+$',
        ['/usr/bin/torify'] + BASE + ['--referer=http://referersite.com']
    ),
    (
        r'https://mega\.nz/.+$',
        ['megadl', '--no-progress']
    ),
    (
        r'(https?://)?othersite\.com/.+$',
        ['downloadtool']
    )
]

def get_command(url):
    """Return command for downloading a particular url."""
    url = unquote(url)
    commands = next((f for p, f in COMMANDS if re.match(p, url)), BASE)
    return commands + [url]