Remove partial matching duplicate lines and retain longest line Write the shortest possible program to remove all partial matched duplicates from a list and only retain the longest lines. Sort order does not matter.
For following inputs, the intent is to search for the string reminder followed by a number and retain the longest unique reminder + number lines.
Some rules

reminder is a hard-coded word, case-sensitive.
All lines contain exactly one match.
There is always a space between reminder and the number.
Only positive, whole numbers are used in the matches (not necessarily a contiguous set).
Lines with same length for the same reminder are possible. It does not matter what line is chosen.
Sort order of output does not matter.

Inputs
A short reminder 1
This is the longest reminder 1 available
This is the longest reminder 2 available, different length
A short reminder 2
A short reminder 3
This is the longest reminder 3 available, another different length
Another short reminder 3
A reminder -1 but really a short reminder 42
This is the longest reminder but really a short reminder 42.

Expected output
This is the longest reminder 1 available
This is the longest reminder 2 available, different length
This is the longest reminder 3 available, another different length
This is the longest reminder but really a short reminder 42.

Shortest code wins

Background: this stackoverflow question
JavaScript (ES6),  85 82  79 bytes

a=&gt;a.sort((a,b)=&gt;-!b[a.length]).filter(s=&gt;a[k=/reminder \d+/.exec(s)]^(a[k]=1))

Try it online!
How?
We first sort all strings from longest to shortest.
a.sort((a, b) =&gt;
  -!b[a.length]  // 0 if 'b' is longer than 'a', -1 otherwise
)

We then filter the strings, keeping only the first occurrence of each reminder N key. The underlying object of the input array a[] is re-used to keep track of the keys that were already encountered.
.filter(s =&gt;
  a[k = /reminder \d+/.exec(s)]
  ^
  (a[k] = 1)
)