Home/Tools/@tpmjs/official-regex-extract

regexExtractTool

@tpmjs/official-regex-extract

Extract all regex matches from text with optional capture group support

Official
text
v0.1.1
MIT

Interactive Playground

Test @tpmjs/official-regex-extract (regexExtractTool) with AI-powered execution

0/2000 characters

Installation & Usage

Install this tool and use it with the AI SDK

1. Install the package

npm install @tpmjs/official-regex-extract
pnpm add @tpmjs/official-regex-extract
yarn add @tpmjs/official-regex-extract
bun add @tpmjs/official-regex-extract
deno add npm:@tpmjs/official-regex-extract

2. Import the tool

import { regexExtractTool } from '@tpmjs/official-regex-extract';

3. Use with AI SDK

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { regexExtractTool } from '@tpmjs/official-regex-extract';

const result = await generateText({
  model: openai('gpt-4o'),
  tools: { regexExtractTool },
  prompt: 'Your prompt here...',
});

console.log(result.text);

Signature

(text: string, pattern: string, flags?: string, groups?: boolean) => Promise<unknown>

Tags

capture
extract
group
matches
matching
official
optional
pattern
regex
support
text
tpmjs

Parameters

Available configuration options

Auto-extracted
text
Required
Type: string

The text to search

pattern
Required
Type: string

Regular expression pattern

flags
Optional
Type: string

Regular expression flags (g, i, m, s, u, y)

groups
Optional
Type: boolean

Return capture groups as objects

Schema extracted: 3/1/2026, 4:28:23 AM

README

@tpmjs/official-regex-extract

Extract all regex matches from text with optional capture group support.

Installation

npm install @tpmjs/official-regex-extract

Usage

import { regexExtractTool } from '@tpmjs/official-regex-extract';
import { generateText } from 'ai';

const result = await generateText({
  model: yourModel,
  tools: {
    regexExtract: regexExtractTool,
  },
  prompt: 'Extract all email addresses from the text',
});

Parameters

  • text (string, required): The text to search for matches
  • pattern (string, required): Regular expression pattern (without delimiters)
  • flags (string, optional): Regular expression flags
    • g - global (automatically added if not present)
    • i - case-insensitive
    • m - multiline
    • s - dotAll (. matches newlines)
    • u - unicode
    • y - sticky
  • groups (boolean, optional): If true, return detailed match objects with capture groups and positions. Default: false

Returns

{
  matches: string[] | MatchWithGroups[];  // Array of matches
  matchCount: number;                     // Total number of matches
  hasMatches: boolean;                    // Whether any matches were found
}

// When groups=true, each match is:
{
  match: string;                          // The full matched text
  groups: Record<string, string>;         // Named capture groups
  index: number;                          // Position in text
}

Examples

Extract email addresses

const result = await regexExtractTool.execute({
  text: 'Contact us at support@example.com or sales@example.com',
  pattern: '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}',
  flags: 'i',
});
// {
//   matches: ['support@example.com', 'sales@example.com'],
//   matchCount: 2,
//   hasMatches: true
// }

Extract URLs with capture groups

const result = await regexExtractTool.execute({
  text: 'Visit https://example.com and http://test.org',
  pattern: '(?<protocol>https?)://(?<domain>[^\\s]+)',
  groups: true,
});
// {
//   matches: [
//     {
//       match: 'https://example.com',
//       groups: { protocol: 'https', domain: 'example.com' },
//       index: 6
//     },
//     {
//       match: 'http://test.org',
//       groups: { protocol: 'http', domain: 'test.org' },
//       index: 30
//     }
//   ],
//   matchCount: 2,
//   hasMatches: true
// }

Extract phone numbers

const result = await regexExtractTool.execute({
  text: 'Call (555) 123-4567 or (555) 987-6543',
  pattern: '\\(\\d{3}\\)\\s\\d{3}-\\d{4}',
});
// {
//   matches: ['(555) 123-4567', '(555) 987-6543'],
//   matchCount: 2,
//   hasMatches: true
// }

Extract hashtags (case-insensitive)

const result = await regexExtractTool.execute({
  text: 'Love #JavaScript and #TypeScript!',
  pattern: '#\\w+',
  flags: 'i',
});
// {
//   matches: ['#JavaScript', '#TypeScript'],
//   matchCount: 2,
//   hasMatches: true
// }

Extract dates with named groups

const result = await regexExtractTool.execute({
  text: 'Event on 2024-03-15 and deadline 2024-06-30',
  pattern: '(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})',
  groups: true,
});
// {
//   matches: [
//     {
//       match: '2024-03-15',
//       groups: { year: '2024', month: '03', day: '15' },
//       index: 9
//     },
//     {
//       match: '2024-06-30',
//       groups: { year: '2024', month: '06', day: '30' },
//       index: 33
//     }
//   ],
//   matchCount: 2,
//   hasMatches: true
// }

Use Cases

  • Extracting email addresses from text
  • Finding URLs in content
  • Parsing phone numbers
  • Extracting hashtags or mentions
  • Finding dates in various formats
  • Extracting code snippets or code blocks
  • Parsing structured data from text
  • Finding price values
  • Extracting IP addresses
  • Validating and extracting specific patterns

Tips

  • The g (global) flag is automatically added to find all matches
  • Use named capture groups (?<name>...) for clearer results when groups=true
  • Escape special regex characters: \ ^ $ . * + ? ( ) [ ] { } |
  • Use i flag for case-insensitive matching
  • Use m flag when matching across multiple lines with ^ and $

Error Handling

The tool throws an error if:

  • The pattern is invalid regex syntax
  • Text or pattern is not a string

License

MIT

Statistics

Downloads/month

131

GitHub Stars

0

Quality Score

81%

Bundle Size

NPM Keywords

tpmjs
text
regex
extract
pattern
matching

Maintainers

thomasdavis(thomasalwyndavis@gmail.com)

Frameworks

vercel-ai