Text pattern extractor
Pull email addresses, URLs, numbers, hashtags, IP addresses, dates or colours out of pasted text.
A clear answer. Here’s how.
Applies fixed, linear-time patterns to the text. Email and URL candidates are found by splitting on spaces and punctuation, trimming trailing punctuation and testing each token, so long inputs stay fast. Numbers may carry a sign, thousands commas, a decimal part and an exponent. IPv4 addresses need four octets from 0 to 255, dates must be real calendar dates, hashtags and mentions follow common social-media rules, and colours are #RGB, #RGBA, #RRGGBB or #RRGGBBAA. These look for text that resembles each kind, not valid ones: an address match does not mean the mailbox exists.
How this is checked
4 reference checks passed These 4 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- Text Contact ann@example.com, bob@test.org; or ann@example.com.Extract emailsDuplicates yesOrder first
- Expected, and what Toolmoz gave
- text expected ann@example.com bob@test.org, Toolmoz ann@example.com bob@test.orgMatches found expected 3, Toolmoz 3Distinct values expected 2, Toolmoz 2
- Where the expected answer comes from
- Two distinct addresses, one repeated, counted by hand; the sentence’s final full stop is trimmed
- Allowed difference
- exact
Case 2
- Inputs
- Text Paid 1,250.50 on 3 days; rate -2.5e3, then 42Extract numbersDuplicates noOrder first
- Expected, and what Toolmoz gave
- text expected 1,250.50 3 -2.5e3 42, Toolmoz 1,250.50 3 -2.5e3 42Matches found expected 4, Toolmoz 4
- Where the expected answer comes from
- Four numbers read off the sentence by hand: a number with a thousands comma and decimals, an integer, a signed exponent and an integer
- Allowed difference
- exact
Case 3
- Inputs
- Text Hosts 192.168.1.10, 10.0.0.256 and 8.8.8.8Extract ipv4Duplicates yesOrder first
- Expected, and what Toolmoz gave
- text expected 192.168.1.10 8.8.8.8, Toolmoz 192.168.1.10 8.8.8.8Matches found expected 2, Toolmoz 2
- Where the expected answer comes from
- An octet of 256 is not a valid IPv4 address, so only two of the three candidates count
- Allowed difference
- exact
Case 4
- Inputs
- Text Due 2026-10-18; bad 2026-02-30; also 2024-02-29.Extract datesDuplicates yesOrder first
- Expected, and what Toolmoz gave
- text expected 2026-10-18 2024-02-29, Toolmoz 2026-10-18 2024-02-29Matches found expected 2, Toolmoz 2
- Where the expected answer comes from
- February 30 does not exist, and 2024 is a leap year so 29 February is real (Gregorian rules)
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- Text
Contact ann@example.com, bob@test.org; or ann@example.com. See https://example.com/docs and www.example.org.
- Extract
- Email addresses
- Duplicates
- List each value once, with a count
- Order
- In order of appearance
Example result
| Value | Count |
|---|---|
| ann@example.com | 2 |
| bob@test.org | 1 |
Fixed patterns, not a validator: an email match means “looks like an address”, and a URL match means it starts with http://, https:// or www. Trailing punctuation is trimmed. Copy gives one value per line; the download holds the counts.