fork download
  1. # http://stackoverflow.com/q/32942976/5290909
  2. #python 2.7.10
  3.  
  4. import re
  5.  
  6. text = """
  7. sample_string = 'asdfanksdfkjasdf_ash'
  8. sample_str = "asdfasdfasdf_ash"
  9. sample_st = assdfvb/23+sdf_ash
  10. sample_s : 'assdfvb/23+sdf_ash'
  11. sample = {'sample' : { 'hi' : 'asdfasdf+/asdf+_ash' , 'hello' : 'asdfasf+/asdf+v_ash' }}
  12. """
  13. n = 0
  14.  
  15. pattern = re.compile( r'[=:]\s*(?:(["\'])((?:(?!\1).)*_ash)\1|(\S*_ash)(?!\S))')
  16.  
  17. #loop all matches
  18. for match in pattern.finditer(text):
  19. n += 1
  20. print '\nMatch #%s:' % n
  21.  
  22. #Show groups 2 and 3 captures
  23. for i in range(2,4):
  24. print 'Group %s - [%s:%s]: %s' % (i, match.start(i), match.end(i), match.group(i))
Success #stdin #stdout 0.01s 8968KB
stdin
Standard input is empty
stdout
Match #1:
Group 2 - [18:38]:  asdfanksdfkjasdf_ash
Group 3 - [-1:-1]:  None

Match #2:
Group 2 - [54:70]:  asdfasdfasdf_ash
Group 3 - [-1:-1]:  None

Match #3:
Group 2 - [-1:-1]:  None
Group 3 - [84:102]:  assdfvb/23+sdf_ash

Match #4:
Group 2 - [115:133]:  assdfvb/23+sdf_ash
Group 3 - [-1:-1]:  None

Match #5:
Group 2 - [166:185]:  asdfasdf+/asdf+_ash
Group 3 - [-1:-1]:  None

Match #6:
Group 2 - [200:219]:  asdfasf+/asdf+v_ash
Group 3 - [-1:-1]:  None