Fix for overlapping detected matches by SkiTles55 · Pull Request #1853 · MessageKit/MessageKit

What does this implement/fix? Explain your changes.

When using in MessageLabel multiple custom detector types, some text can match multiple regex's, and then they will be applied, and final action will be related of tap position. My fix removes all overlapped matches and leaves only one biggest.

Sample:
Text in message: "address MNtz8Zz1cPD1CZadoc38jT5qeqeFBS6Aif can match multiple regex's"
Regex's for custom detectors: "(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}", "([3ML][\w]{26,33})|ltc1[\w]+", "[qmN][a-km-zA-HJ-NP-Z1-9]{26,33}"
Detected matches before fix: MNtz8Zz1cPD1CZadoc38jT5qeqeFBS6Aif, Ntz8Zz1cPD1CZadoc38jT5qeqeFBS6Aif, 1cPD1CZadoc38jT5qeqeFBS6Aif
Detected matches after fix: MNtz8Zz1cPD1CZadoc38jT5qeqeFBS6Aif

Does this close any currently open issues?

Nope

Any relevant logs, error output, etc?

Nope

Any other comments?

Nope

Where has this been tested?

Devices/Simulators: iPhone 15 (Simulator)

iOS Version: 17.5

Swift Version: 5.10

MessageKit Version: 4.2.0