import re
regex = re.compile(r"(?<=Html->script|cell|element|Html->css)\(([^\)]+)\)", flags=re.MULTILINE)
test_str = ("$this->element('element.ctp');\n"
"$this->cell('teste.ctp');\n"
"$this->Html->script([\n"
" 'teste.js'\n"
"]);\n"
"$this->Html->script([\n"
" 'teste.js',\n"
" 'teste2.js',\n"
"]);\n"
"$this->Html->script(['teste.js']);\n"
"$this->Html->script('teste.js');\n"
"$this->Html->css(['teste.css']);\n\n"
"--- trechos comentados, não deveria pegar\n"
"// $this->Html->css('teste.css');\n"
"/* ou comentário multi-linha\n"
"$this->Html->script('teste.js');\n"
"$this->Html->css(['teste.css']);\n"
"*/\n\n"
"--- chama função dentro, não retorna o \")\" da chamada\n"
"$this->Html->css(outraFuncaoQueRetornaOcss());\n\n"
"--- não cai na condição do lookbehind, a regex ignora\n"
"$this->whatever('teste');\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html