import re


def markdown_links(text):
    # Match [label](url) where url may contain balanced parentheses.
    # Negative lookbehind (?<!!) excludes image syntax ![...](...)
    pattern = r'(?<!\!)\[([^\]]+)\]\(((?:[^()]*|\([^()]*\))*)\)'
    return [(label, url) for label, url in re.findall(pattern, text)]
