fork download
  1. import re
  2. p = re.compile(ur'''(?P<Alternation1>
  3. \$\{(?P<braced>[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z]\w*)+)
  4. \}
  5. )
  6. |
  7. (?P<Alternation2>
  8. \$(?P<named>[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z]\w*)+
  9. )
  10. )
  11. ''', re.VERBOSE)
  12. test_str = u"asdasd $asd:sd + ${asd123:asd} $HOME $$asd"
  13.  
  14. print [x for x in re.findall(p, test_str)]
Success #stdin #stdout 0.01s 7692KB
stdin
Standard input is empty
stdout
[(u'', u'', u'$asd:sd', u'asd:sd'), (u'${asd123:asd}', u'asd123:asd', u'', u'')]