# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"\.populate_tasks\[(arc|buck|build|hg|phabricator|source_control),"
test_str = ("── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,diff]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,fix]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,focus]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,lint]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,pull]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[arc,refocus]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[buck,build]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[buck,install]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[buck,project]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[buck,run]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[buck,test]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,arc_rebuild]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,buck_build]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,entschema]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,fbios_noextensions]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,instagram_ios_noextensions]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,messenger_ios_noextensions]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,multifeed]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,unicorn]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,wakizashi]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[build,wakizashi_s2p]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[devserver,arc_fix]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[devserver,fixmyserver]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[devserver,flow_oom]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[devserver,hack_oom]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[devserver,hhserver_oom]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hack,hh_healthy_minutes]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,amend]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,bookmarks]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,branch]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,commit]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,diff]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,log]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,pull]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,rebase]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,smartlog]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,status]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[hg,update]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,flow_check]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,flow_init]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,hh_full_check]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,hh_lazy_check]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,hh_server_init]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,intellij_file_to_intellisense]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[ide,intellij_project_to_intellisense]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[land,clean_lands]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[land,landcastle]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,diffusion_pageload]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,gql_client_duration]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,gql_mutation_duration]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,jf_submit_set_dependencies]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,jf_submit_set_diffproperty]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,jf_submit_total_elapsed]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,jf_submit_update_diff]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[phabricator,jf_submit_update_revision]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[presto,adhoc_queue]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[source_control,hg]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[source_control,jellyfish]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[test,local_www]\n"
"── infrastructure.devspeed.error_rates.devspeed_raw_cost_events.populate_tasks[test,mobilelab]")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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