Skip to content
uencoder
TUTORIAL

How to Extract URLs from Text

Find and extract all URLs from unstructured text using pattern matching.

Problem

You have a block of text that contains URLs and need to extract them programmatically.

Prerequisites

  • Understanding of URL structure
  • Knowledge of regex or pattern matching

Steps

  1. 1. Define what constitutes a URL

    URLs start with a scheme (http, https, ftp) followed by :// and a host. They may include port, path, query, and fragment. Decide whether to match only http(s) or all schemes. Also decide whether to include trailing punctuation that is not part of the URL.

    Input
    text with URLs
    Output
    matching rules defined
  2. 2. Apply the extraction pattern

    Use a regex or URL extraction tool to find all matches. A common pattern is https?://[\w-]+(\.[\w-]+)+[/\w.?=&%-]*. Test against various URL formats: with ports, query strings, fragments, and international domains.

    Input
    Visit https://example.com/page?q=1 today.
    Output
    https://example.com/page?q=1
  3. 3. Clean and validate the results

    Strip trailing punctuation (periods, commas, parentheses) that is not part of the URL. Validate each extracted URL by parsing it. Handle edge cases like URLs in parentheses or URLs followed by punctuation.

    Input
    raw matches
    Output
    clean, valid URLs

Expected result

A list of valid URLs extracted from the text, with no trailing punctuation or invalid matches.

Common errors

Trailing punctuation included in the URL
Strip trailing periods, commas, and closing parentheses that are not part of the URL. These are common in sentence-final URLs.
URLs in parentheses not handled
URLs inside parentheses (like Wikipedia style) need special handling. Use a parser that balances parentheses.

Troubleshooting

  • If valid URLs are missed, relax the pattern or add support for more schemes.
  • If invalid strings are matched, tighten the pattern to require a valid host structure.

Security limits

  • Extracted URLs may be malicious. Do not automatically visit them. Validate and sandbox any URL processing.

Related tools

Related glossary

Related tasks

Ready to run it?

References