How do i get the all the regions available in the current theme programatically?
Active ADMIN theme &amp; active SYSTEM theme might be different.(By default active admin theme is seven &amp; active system theme is bartik)
Get the current theme used by the below code(if you are in admin section it will return seven, else bartik)

$theme = \Drupal::theme()-&gt;getActiveTheme()-&gt;getName();


As we need the system theme, below code will do the job

$theme = \Drupal::config('system.theme')-&gt;get('default');


And pass the theme name to get all the regions 

$system_region = system_region_list($theme, $show = REGIONS_ALL);


This will give you all the regions in array format

$region_list =  json_decode(json_encode(system_region_list(\Drupal::config('system.theme')-&gt;get('default'),$show = REGIONS_ALL)),true);


Second part of the question 

Get the blocks in particular region . Below is the code snippet which can get the blocks placed in pre-content region:

  $blocks = \Drupal::entityManager()
      -&gt;getStorage('block')
      -&gt;loadByProperties(array('theme' =&gt;  \Drupal::config('system.theme')-&gt;get('default'),'region'=&gt;'pre_content'));