Regular Expressions 101

Save & Share

  • Regex Version: ver. 1
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression

/
/
m

Test String

Code Generator

Generated Code

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "^Plan A:\\s+(?<plan_a>[\\w\\W]+?)\\s+Plan B:\\s+(?<plan_b>[\\w\\W]+?)\\s+Plan C:\\s+(?<plan_c>[\\w\\W]+)"; final String string = "Plan A: North Island Exploration\n\n" + "Day 1: Explore Auckland\n" + "- Morning: Visit the Auckland War Memorial Museum\n" + "- Lunch: Try local cuisine at Depot Eatery & Oyster Bar\n" + "- Afternoon: Take a ferry to Waiheke Island for wine tasting\n" + "- Dinner: Dine at The Grove\n" + "- Accommodation: Rydges Auckland\n" + "- Estimated expenses: $150 per person\n" + "- Contingency plan: Visit indoor attractions in case of bad weather\n\n" + "Day 2: Rotorua Adventure\n" + "- Morning: Visit Te Puia and see Pohutu Geyser\n" + "- Lunch: Have a traditional Maori lunch at Tamaki Maori Village\n" + "- Afternoon: Explore Wai-O-Tapu Thermal Wonderland\n" + "- Dinner: Enjoy a dinner cruise on Lake Rotorua\n" + "- Accommodation: Millennium Hotel Rotorua\n" + "- Estimated expenses: $200 per person\n" + "- Contingency plan: Visit a nearby spa for relaxation if outdoor activities are hindered by bad weather\n\n" + "Day 3: Taupo and Tongariro National Park\n" + "- Morning: Take a cruise on Lake Taupo\n" + "- Lunch: Grab a bite at The Brantry\n" + "- Afternoon: Visit Tongariro National Park for hiking\n" + "- Dinner: Dine at Plateau Restaurant\n" + "- Accommodation: Suncourt Hotel & Conference Centre Taupo\n" + "- Estimated expenses: $180 per person\n" + "- Contingency plan: Explore local museums or go shopping in case of bad weather\n\n" + "Day 4: Wellington City Tour\n" + "- Morning: Visit Te Papa Museum\n" + "- Lunch: Try local food at Ortega Fish Shack\n" + "- Afternoon: Explore Wellington Botanic Garden\n" + "- Dinner: Dine at Shed 5\n" + "- Accommodation: QT Wellington\n" + "- Estimated expenses: $160 per person\n" + "- Contingency plan: Visit art galleries or attend cultural performances indoors if outdoor sightseeing is not feasible\n\n" + "Day 5: Return to Auckland\n" + "- Morning: Fly back to Auckland\n" + "- Lunch: Enjoy a meal at The Sugar Club overlooking the city\n" + "- Afternoon: Explore shopping at Queen Street\n" + "- Estimated expenses: $100 per person\n" + "- Contingency plan: Visit indoor markets or shopping centers if outdoor activities are limited\n\n\n" + "Plan B: South Island Adventure\n\n" + "Day 1: Arrival in Queenstown\n" + "- Afternoon: Visit Skyline Queenstown for panoramic views\n" + "- Dinner: Dine at Rata Dining\n" + "- Accommodation: Novotel Queenstown Lakeside\n" + "- Estimated expenses: $150 per person\n" + "- Contingency plan: Explore local wineries or take a scenic drive in case of bad weather\n\n" + "Day 2: Milford Sound\n" + "- Morning: Take a scenic bus tour to Milford Sound\n" + "- Lunch: Have a picnic at the waterfront\n" + "- Afternoon: Cruise through the fjords\n" + "- Dinner: Enjoy seafood at Fergburger\n" + "- Accommodation: Milford Sound Lodge\n" + "- Estimated expenses: $250 per person\n" + "- Contingency plan: Visit local museums or galleries if outdoor activities are not possible\n\n" + "Day 3: Wanaka and Mount Aspiring National Park\n" + "- Morning: Visit Puzzling World in Wanaka\n" + "- Lunch: Dine at Urban Grind Cafe\n" + "- Afternoon: Explore Mount Aspiring National Park\n" + "- Dinner: Enjoy a meal at The Big Fig\n" + "- Accommodation: Edgewater Hotel\n" + "- Estimated expenses: $180 per person\n" + "- Contingency plan: Visit local cafes or bookstores for indoor relaxation if outdoor exploration is hampered by bad weather\n\n" + "Day 4: Glacier Country\n" + "- Morning: Visit Fox Glacier and go hiking\n" + "- Lunch: Grab food at The Last Kitchen\n" + "- Afternoon: Explore Franz Josef Glacier\n" + "- Dinner: Dine at Alice May\n" + "- Accommodation: Scenic Hotel Franz Josef Glacier\n" + "- Estimated expenses: $200 per person\n" + "- Contingency plan: Visit local hot pools or spa for relaxation if outdoor activities are hindered by bad weather\n\n" + "Day 5: Return to Queenstown\n" + "- Morning: Drive back to Queenstown\n" + "- Lunch: Eat at Botswana Butchery\n" + "- Afternoon: Visit Arrowtown for shopping\n" + "- Estimated expenses: $100 per person\n" + "- Contingency plan: Explore local art galleries or attend cultural performances indoors if outdoor activities are limited\n\n\n" + "Plan C: North and South Island Highlights\n\n" + "Day 1: Arrival in Christchurch\n" + "- Afternoon: Visit the Canterbury Museum\n" + "- Dinner: Dine at Pescatore\n" + "- Accommodation: The George Christchurch\n" + "- Estimated expenses: $150 per person\n" + "- Contingency plan: Explore local cafes or bookstores if outdoor activities are hindered by bad weather\n\n" + "Day 2: Arthur's Pass National Park\n" + "- Morning: Take a scenic drive to Arthur's Pass\n" + "- Lunch: Have a meal at the Alpine Restaurant\n" + "- Afternoon: Explore the national park and go hiking\n" + "- Dinner: Enjoy dinner at Devils Punchbowl Cafe\n" + "- Accommodation: Wilderness Lodge Arthur's Pass\n" + "- Estimated expenses: $200 per person\n" + "- Contingency plan: Visit local museums or galleries if outdoor activities are not possible\n\n" + "Day 3: Marlborough Wine Region\n" + "- Morning: Drive to Marlborough region for wine tasting\n" + "- Lunch: Dine at Hans Herzog\n" + "- Afternoon: Visit vineyards for tasting\n" + "- Dinner: Enjoy a meal at Arbour\n" + "- Accommodation: Marlborough Vintners Hotel\n" + "- Estimated expenses: $180 per person\n" + "- Contingency plan: Visit a local market or shop for souvenirs in case of bad weather\n\n" + "Day 4: Abel Tasman National Park\n" + "- Morning: Visit Abel Tasman National Park for kayaking\n" + "- Lunch: Grab a meal at Hooked on Marahau\n" + "- Afternoon: Explore the coastal trails\n" + "- Dinner: Dine at The Park Cafe\n" + "- Accommodation: Parklands Marina Holiday Park\n" + "- Estimated expenses: $220 per person\n" + "- Contingency plan: Visit local spas or hot pools for relaxation if outdoor activities are limited due to bad weather\n\n" + "Day 5: Return to Christchurch\n" + "- Morning: Drive back to Christchurch\n" + "- Lunch: Eat at 27 Steps\n" + "- Afternoon: Explore Christchurch Botanic Gardens\n" + "- Estimated expenses: $100 per person\n" + "- Contingency plan: Visit local art galleries or attend cultural performances indoors if outdoor activities are not feasible."; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); final Matcher matcher = pattern.matcher(string); if (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html