I would just write something tailored to this situation. For example:
function stripBLData(%line) {
%start = strPos(%line, "action=profile"); // Find an area close to the beginning of the username. We want to make sure we grab the right data, so starting closer to the actual data reduces possible incorrect grabbing.
%start = strPos(%line, ">", %start) + 1; // Look for the first closing bracket that comes after action=profile. This is our start point to get data.
%end = strPos(%line, "</a>", %start); // Look for </a> after the start of the username. That's where the username ends.
%username = getSubStr(%line, %start, %end); // Get the text between these two points. This is our username.
%start = strPos(%line, "</b>: ", %end) + 6; // Find the point where our message starts.
%end = strPos(%line, "</div>", %start); // Find the point where our message ends.
%message = getSubStr(%line, %start, %end); // Get the data between these two points.
return %username TAB %message; // Return the data.
}