fork download
  1. import re
  2.  
  3. pattern = r"(\(\(PERS\)\s*)((?:(?![()]|\sy\b).)* y\b[^()]*?)\s*\)"
  4. s = ("((PERS) Marcos Sy y) ((PERS) Lucy) estuvieron ((VERB) jugando) sdds\n"
  5. "ashsahghgsa ((PERS) María y Rosa ds) son alumnas de esa escuela y juegan juntas\n"
  6. "ashsahghgsa ((PERS) María y Rosa ds y Test Person 1 y test person 2) son alumnas de esa escuela y juegan juntas")
  7.  
  8.  
  9. def custom_replacement(m):
  10. return m.group(1) + " y ((PERS) ".join([p + ")" for p in re.split(r"\s+y\b\s*", m.group(2)) if p])
  11.  
  12.  
  13. replaced_names = re.sub(pattern, custom_replacement, s)
  14. replaced_pers = re.sub(r"(\(\(PERS\)[^()]*\))\s*(?=\(\(PERS\)[^()]*\))", r"\1 y ", replaced_names)
  15. print(replaced_pers)
Success #stdin #stdout 0.03s 9788KB
stdin
Standard input is empty
stdout
((PERS) Marcos Sy) y ((PERS) Lucy) estuvieron ((VERB) jugando) sdds
ashsahghgsa ((PERS) María) y ((PERS) Rosa ds) son alumnas de esa escuela y juegan juntas
ashsahghgsa ((PERS) María) y ((PERS) Rosa ds) y ((PERS) Test Person 1) y ((PERS) test person 2) son alumnas de esa escuela y juegan juntas