fork download
  1. import re
  2. phones = ['(232)6896232', '(123)4567891']
  3. def positions_regex(regulars, text):
  4. positions = []
  5. for item in regulars:
  6. pos = re.search(re.escape(item), text) # re.escape!
  7. if pos:
  8. positions.append({'start': pos.start(), 'end': pos.end()})
  9. return positions
  10.  
  11. def positions_literal(regulars, text):
  12. positions = []
  13. for item in regulars:
  14. pos = text.index(item) # re.escape!
  15. if pos > -1:
  16. positions.append({'start': pos, 'end': pos+len(item) })
  17. return positions
  18.  
  19. s = "(232)6896232 --- (123)4567891"
  20. print(positions_regex(phones, s))
  21. print(positions_literal(phones, s))
Success #stdin #stdout 0s 23352KB
stdin
Standard input is empty
stdout
[{'start': 0, 'end': 12}, {'start': 17, 'end': 29}]
[{'start': 0, 'end': 12}, {'start': 17, 'end': 29}]