My approach is to create a pattern that uses alternation (|) to match each distinct format, while being specific enough to avoid false matches:

1. Phone numbers: I created patterns for each of the 5 formats (+1-123-456-7890, 123-456-7890, +1 123 456 7890, 123.456.7890, 1234567890)
2. Email addresses: I created specific patterns for each email rather than a generic email pattern to avoid matching other potential emails
3. IDs: I made patterns for the three specific ID formats (ABC-123-xyz, etc.)
4. Date formats: I created specific patterns for the ISO dates, bracketed dates, and other date formats
5. Credit card numbers: I created patterns for each format of credit card numbers
6. Special codes: I created patterns for the specific codes with # and $ symbols

I'm using word boundaries (\b) where appropriate to ensure we only match complete items, and I'm escaping special characters like periods, plus signs, brackets, etc. to match them literally.

Rather than creating a generic pattern for each type, I'm specifically targeting each individual item to ensure we don't match anything extra from the text.