I have a python template engine that heavily uses regexp. It uses concatenation like:
re.compile( regexp1 + \"|\" + regexp2 + \"*|\" + regexp3 + \"+\" )
<
To match an empty string - even in multiline mode - you can use \A\Z
, so:
re.compile('\A\Z|\A\Z*|\A\Z+')
The difference is that \A
and \Z
are start and end of string, whilst ^
and $
these can match start/end of lines, so $^|$^*|$^+
could potentially match a string containing newlines (if the flag is enabled).
And to fail to match anything (even an empty string), simply attempt to find content before the start of the string, e.g:
re.compile('.\A|.\A*|.\A+')
Since no characters can come before \A (by definition), this will always fail to match.