It seems like avoiding eval for so long I've forgotten that the input needs to be a string! The evalc approach isn't the greatest but it does let me focus on the organization and layout instead of how to format the property value string. Here's the code (NOTE: the regexp might not be the best ...):
%I call the object I am processing other_obj in this example, change to suit the name of your variable ...
str = evalc('builtin(''disp'',other_obj'')');
I_START = strfind(str,sprintf('Properties:\n'));
I_END = strfind(str,sprintf('<a href="matlab:methods'));
props_and_text = regexp(str(I_START:I_END),'(?<prop_name>[^\s:]+):\s*(?<value>[^\n]+)','names');