import re
regex = r'\[\[(([\w]+)::)?([^|\t\n\r\f\v]+)(\|([^\t\n\r\f\v]+))?\]\]'
print re.match(regex, '[[Home]]').group(2,3,5) # matches, good
print re.match(regex, '[[Home|Home page]]').group(2,3,5) # matches, good
print re.match(regex, '[[nw::Home]]').group(2,3,5) # matches, good
print re.match(regex, '[[nw::Home|Home page]]').group(2,3,5) # matches, good
print re.match(regex, '[[nw|Home|Home page]]').group(2,3,5) # doesn't match, good
print re.match(regex, '[[nw|Home::Home page]]').group(2,3,5) # matches, bad
print re.match(regex, '[[nw::Home::Home page]]').group(2,3,5) # matches, bad
aW1wb3J0IHJlCgpyZWdleCA9IHInXFtcWygoW1x3XSspOjopPyhbXnxcdFxuXHJcZlx2XSspKFx8KFteXHRcblxyXGZcdl0rKSk/XF1cXScKcHJpbnQgcmUubWF0Y2gocmVnZXgsICdbW0hvbWVdXScpLmdyb3VwKDIsMyw1KSAjIG1hdGNoZXMsIGdvb2QKcHJpbnQgcmUubWF0Y2gocmVnZXgsICdbW0hvbWV8SG9tZSBwYWdlXV0nKS5ncm91cCgyLDMsNSkgIyBtYXRjaGVzLCBnb29kCnByaW50IHJlLm1hdGNoKHJlZ2V4LCAnW1tudzo6SG9tZV1dJykuZ3JvdXAoMiwzLDUpICMgbWF0Y2hlcywgZ29vZApwcmludCByZS5tYXRjaChyZWdleCwgJ1tbbnc6OkhvbWV8SG9tZSBwYWdlXV0nKS5ncm91cCgyLDMsNSkgIyBtYXRjaGVzLCBnb29kCnByaW50IHJlLm1hdGNoKHJlZ2V4LCAnW1tud3xIb21lfEhvbWUgcGFnZV1dJykuZ3JvdXAoMiwzLDUpICMgZG9lc24ndCBtYXRjaCwgZ29vZApwcmludCByZS5tYXRjaChyZWdleCwgJ1tbbnd8SG9tZTo6SG9tZSBwYWdlXV0nKS5ncm91cCgyLDMsNSkgIyBtYXRjaGVzLCBiYWQKcHJpbnQgcmUubWF0Y2gocmVnZXgsICdbW253OjpIb21lOjpIb21lIHBhZ2VdXScpLmdyb3VwKDIsMyw1KSAjIG1hdGNoZXMsIGJhZA==
(None, 'Home', None)
(None, 'Home', 'Home page')
('nw', 'Home', None)
('nw', 'Home', 'Home page')
(None, 'nw', 'Home|Home page')
(None, 'nw', 'Home::Home page')
('nw', 'Home::Home page', None)