It's important to know if these messages are coming in all at once, or in pieces. Judging from the log in your first message, they are coming in pieces and the reason it is such a large message is that no points had consumed the message when you created the point that read everything. I will operate under the assumption those values will arrive in separate messages for this first part of the response.
You can have a configuration like the following:
Use terminator: No
Message Regex: .*(1-0:1.8.1|1-0:1.8.2|\(0-1:24.2.1\)\(m3\)).*
Point Identifier Group: 1
Configuration in Hex: No
DATA POINT 1-0:1.8.1
Data Type: Numeric
Point Identifier: 1-0:1.8.1
Value Group: 1
Value Regex .*1-0:1.8.1\((\d+[.]\d+)kWh\).*
And perhaps you can figure out the other two data points.
On the other hand, if they are all in one message, you can use the same configuration as you have getting that long value (the catch all), and you'll have three different points with empty identifiers. Then you'll use settings for the data point like:
Value Regex: .*1-0:1.8.1\((\d+[.]\d+)kWh\)
Value Index: 1