fork download
  1. import re
  2.  
  3. regex = r'\[\[(([\w]+)::)?([^|\t\n\r\f\v]+)(\|([^\t\n\r\f\v]+))?\]\]'
  4. print re.match(regex, '[[Home]]').group(2,3,5) # matches, good
  5. print re.match(regex, '[[Home|Home page]]').group(2,3,5) # matches, good
  6. print re.match(regex, '[[nw::Home]]').group(2,3,5) # matches, good
  7. print re.match(regex, '[[nw::Home|Home page]]').group(2,3,5) # matches, good
  8. print re.match(regex, '[[nw|Home|Home page]]').group(2,3,5) # doesn't match, good
  9. print re.match(regex, '[[nw|Home::Home page]]').group(2,3,5) # matches, bad
  10. print re.match(regex, '[[nw::Home::Home page]]').group(2,3,5) # matches, bad
Success #stdin #stdout 0.08s 8880KB
stdin
Standard input is empty
stdout
(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)