A rather crude approach is to read the file line by line and check if the line consists of three numbers.  If it does, then append this to a temporary matrix.  When you finally get to a line that doesn't contain three numbers, append this matrix as an element in a cell array, clear the temporary matrix and continue.
Something like this would work, assuming that the file is stored in 'file.txt':
%// Open the file
f = fopen('file.txt', 'r');
%// Initialize empty cell array
data = {};
%// Initialize temporary matrix
temp = [];
%// Loop over the file...
while true
    %// Get a line from the file
    line = fgetl(f);
    %// If we reach the end of the file, get out
    if line == -1
        %// Last check before we break
        %// Check if the temporary matrix isn't empty and add
        if ~isempty(temp)
            data = [data; temp];
        end
        break; 
    end
    %// Else, check to see if this line contains three numbers
    numbers = textscan(line, '%f %f %f');
    %// If this line doesn't consist of three numbers...
    if all(cellfun(@isempty, numbers))
        %// If the temporary matrix is empty, skip
        if isempty(temp)
            continue;
        end
        %// Concatenate to cell array
        data = [data; temp];
        %// Reset temporary matrix
        temp = [];
    %// If this does, then create a row vector and concatenate
    else
        temp = [temp; numbers{:}];
    end
end
%// Close the file
fclose(f);
The code is pretty self-explanatory but let's go into it to be sure you know what's going on.  First open up the file with fopen to get a "pointer" to the file, then initialize our cell array that will contain our matrices as well as the temporary matrix used when reading in matrices in between header information.  After we simply loop over each line of the file and we can grab a line with fgetl using the file pointer we created.  We then check to see if we have reached the end of the file and if we have, let's check to see if the temporary matrix has any numerical data in it.  If it does, add this into our cell array then finally get out of the loop.  We use fclose to close up the file and clean things up.
Now the heart of the operation is what follows after this check. We use textscan and search for three numbers separated by spaces.  That's done with the '%f %f %f' format specifier.  This should give you a cell array of three elements if you are successful with numbers.  If this is correct, then convert this cell array of elements into a row of numbers and concatenate this into the temporary matrix.  Doing temp = [temp; numbers{:}]; facilitates this concatenation.  Simply put I piece together each number and concatenate them horizontally to create a single row of numbers.  I then take this row and concatenate this as another row in the temporary matrix.  
Should we finally get to a line where it's all text, this will give you all three elements in the cell array found by textscan to be empty.  That's the purpose of the all and cellfun call.  We search each element in the cell and see if it's empty.  If every element is empty, this is a line that is text.  If this situation arises, simply take the temporary matrix and add this as a new entry into your cell array.  You'd then reset the temporary matrix and start the logic over again.
However, we also have to take into account that there may be multiple lines that consist of text.  That's what the additional if statement is for inside the first if block using all.  If we have an additional line of text that precedes a previous line of text, the temporary matrix of values should still be empty and so you should check to see if that is empty before you try and concatenate the temporary matrix.  If it's empty, don't bother and just continue.  
After running this code, I get the following for my data matrix:
>> format long g
>> celldisp(data)
data{1} =
                         0             -2.680148e-16                         0
      9.84392531300799e-12              -4.75347e-06              2.216314e-11
      1.00005260577246e-11             -4.835427e-06              2.552497e-11
      1.03137275471577e-11              -4.99934e-06             -3.042096e-12
      1.09401305260241e-11             -5.327165e-06             -1.206968e-11
data{2} =
                         0             -2.680148e-16                         0
      9.84392531300799e-12              -4.75347e-06              2.216314e-11
      1.00005260577246e-11             -4.835427e-06              2.552497e-11
      1.03137275471577e-11              -4.99934e-06             -3.042096e-12
      1.09401305260241e-11             -5.327165e-06             -1.206968e-11
To access a particular "table", do data{ii} where ii is the table you want to access that was read in from top to bottom in your text file.