List entries for a single tag from blog section I want to get a list of entries in a template that have one specific tag 'weddings' and exclude entries that do not have this tag.

{% set tag = craft.tags.search('weddings').first() %}

{% if tag %}          
  {% set entries = craft.entries.relatedTo(tag) %}
  {% for entry in craft.entries.section('blog').limit(5) %}
    {# get stuff #}
  {% endfor %}
{% endif %}


But this gets me all blog entries - even those without the Tag weddings. What am I missing?
You were very close! You are looping through craft.entries.section('blog') which doesn't use your tag query. You simply need to loop through the results of your query which you've set in the entries variable. 

You may want to grab your weddings tag using the tag's id or slug as .search will find any tag with the string 'weddings' in it. 

It might also be a good idea to use the conditional to check entries is returning something first, before outputting it.

{% set tag = craft.tags.slug('weddings').first() %}
{% set entries = craft.entries.relatedTo(tag) %}

{% if entries|length %}
  {% for entry in entries.limit(5) %}
    {# get stuff #}
  {% endfor %}
{% endif %}