I'm assuming you could have other text within the body of the email. Hopefully this will get what you're looking for.
I'm using the same Table structure as you have provided.

Below is the email I used for testing.

See full flow below. I'll go into each of the actions.

Html to text is what you've already used to strip out the HTML.

Select converts the data to an array and trims any leading/trailing spaces. The expressions used are below. Also note that Map is set to Text mode (see screenshot).
//From
split(outputs('Html_to_text')?['body'], decodeUriComponent('%0A'))
//Map
trim(item())
//Note that decodeUriComponent('%0A') refers to new line characters.

Filter array Date will filter the array to only include items that start with "Date:" The expression used is:
item()

Filter array ID will filter the array to only include items that start with "ID:" The expression used is:
item()

Add a row into a table uses the following expressions to extract out the data.
//Data1
slice(triggerOutputs()?['body/subject'], add(indexOf(triggerOutputs()?['body/subject'], '('), 1), indexOf(triggerOutputs()?['body/subject'], ')'))
//Data2
trim(last(split(first(body('Filter_array_Date')), ':')))
//Data3
trim(last(split(first(body('Filter_array_ID')), ':')))

The output after running the flow after receiving an email.

----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.