Syntax for extensions

Waylan Limberg waylan at
Thu Feb 14 14:29:26 EST 2008

Ah, so you are using python-markdown

On Wed, Feb 13, 2008 at 2:25 PM, Florian Lindner <mailinglists at> wrote:

> Hello,

> I need to to slightly extend the markdown syntax. (place an image (img tag)

> in text which URL has not yet been determined). Therefore I want to define

> something like $[Alt text](img.jpg) which would be replaced by my

> pre-processor with ![Alt text](/path/to/img.jpg) and then sent to markdown.


Upon determining your syntax, write a regular expression that will
match it, but not some other markdown syntax. So using your proposed
$[Alt text](img.jpg) , just use the regex that matches an image and
replace the `!` for a `$`. The regex for imagelinks can be found on
line 679 of version 1.7:

IMAGE_LINK_RE = r'\!' + BRK + r'\s*\(([^\)]*)\)' #

Now, I realize a string concocation is happening there where `BRK` is
a regex string to allow multiple levels of brackets. Probably more
than you need. This should do the trick for you:

REPLACE_IMG_RE = r'\$\[([^\]]*)\]\s*\(([^\)]*)\)' # $[Alt text](img.jpg)

Note that that regex will not match a regular link or an img link.
Also note that == 'Alt text' == 'img.jpg`

I would suggest using that in a InlinePattern rather than a
preprocessor. Just be sure to insert it in the beginning of the
patterns so it runs first.

The page I pointed you to earlier should get you started. You may want
to look at the InlinePatterns in for more ideas. You can
also find a number of extensions listed here [1]. I'd start with the
wikilink extension as a base to build upon.


Waylan Limberg
waylan at

More information about the Markdown-Discuss mailing list