Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • DSA
  • Practice Pattern Searching
  • Tutorial on Pattern Searching
  • Naive Pattern Searching
  • Rabin Karp
  • KMP Algorithm
  • Z Algorithm
  • Trie for Pattern Seaching
  • Manacher Algorithm
  • Suffix Tree
  • Ukkonen's Suffix Tree Construction
  • Boyer Moore
  • Aho-Corasick Algorithm
  • Wildcard Pattern Matching
Open In App
Next Article:
Regex Tutorial - How to write Regular Expressions?
Next article icon

Regex Tutorial - How to write Regular Expressions?

Last Updated : 12 Apr, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

A regular expression (regex) is a sequence of characters that define a search pattern. Here's how to write regular expressions:

  1. Start by understanding the special characters used in regex, such as ".", "*", "+", "?", and more.
  2. Choose a programming language or tool that supports regex, such as Python, Perl, or grep.
  3. Write your pattern using the special characters and literal characters.
  4. Use the appropriate function or method to search for the pattern in a string.

Examples:

  1. To match a sequence of literal characters, simply write those characters in the pattern.
  2. To match a single character from a set of possibilities, use square brackets, e.g. [0123456789] matches any digit.
  3. To match zero or more occurrences of the preceding expression, use the star (*) symbol.
  4. To match one or more occurrences of the preceding expression, use the plus (+) symbol.
  5. It is important to note that regex can be complex and difficult to read, so it is recommended to use tools like regex testers to debug and optimize your patterns.

A regular expression (sometimes called a rational expression) is a sequence of characters that define a search pattern, mainly for use in pattern matching with strings, or string matching, i.e. "find and replace" like operations. Regular expressions are a generalized way to match patterns with sequences of characters. It is used in every programming language like C++, Java and Python. 

What is a regular expression and what makes it so important? 

Regex is used in Google Analytics in URL matching in supporting search and replaces in most popular editors like Sublime, Notepad++, Brackets, Google Docs, and Microsoft Word.

Example :  Regular expression for an email address :
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$

The above regular expression can be used for checking if a given set of characters is an email address or not. 

How to write regular expressions?

There are certain elements  used to write regular expressions as mentioned below:

1. Repeaters (  *, +, and { } )  

These symbols act as repeaters and tell the computer that the preceding character is to be used for more than just one time.

2. The asterisk symbol ( * )

It tells the computer to match the preceding character (or set of characters) for 0 or more times (upto infinite).

Example : The regular expression ab*c will give ac, abc, abbc, abbbc….and so on 

3. The Plus symbol ( + ) 

It tells the computer to repeat the preceding character (or set of characters) at atleast one or more times(up to infinite).

Example : The regular expression ab+c will give abc, abbc,
abbbc, … and so on.

4. The curly braces { … } 

It tells the computer to repeat the preceding character (or set of characters) for as many times as the value inside this bracket.

Example : {2} means that the preceding character is to be repeated 2 
times, {min,} means the preceding character is matches min or more
times. {min,max} means that the preceding character is repeated at
least min & at most max times.

5. Wildcard ( . ) 

The dot symbol can take the place of any other symbol, that is why it is called the wildcard character.

Example : 
The Regular expression .* will tell the computer that any character
can be used any number of times.

6. Optional character ( ? ) 

This symbol tells the computer that the preceding character may or may not be present in the string to be matched.

Example : 
We may write the format for document file as – “docx?”
The ‘?’ tells the computer that x may or may not be
present in the name of file format.

7. The caret ( ^ ) symbol ( Setting position for the match )

The caret symbol tells the computer that the match must start at the beginning of the string or line.

Example : ^\d{3} will match with patterns like "901" in "901-333-".

8.  The dollar ( $ ) symbol 

It tells the computer that the match must occur at the end of the string or before \n at the end of the line or string.

Example : -\d{3}$  will match with patterns like "-333" in "-901-333".

9. Character Classes 

A character class matches any one of a set of characters. It is used to match the most basic element of a language like a letter, a digit, a space, a symbol, etc. 


\s: matches any whitespace characters such as space and tab.
\S: matches any non-whitespace characters.
\d: matches any digit character.
\D: matches any non-digit characters.
\w : matches any word character (basically alpha-numeric)
\W: matches any non-word character.
\b: matches any word boundary (this would include spaces, dashes, commas, semi-colons, etc.
[set_of_characters]: Matches any single character in set_of_characters. By default, the match is case-sensitive.

Example : [abc] will match characters a,b and c in any string.

10. [^set_of_characters] Negation: 

Matches any single character that is not in set_of_characters. By default, the match is case-sensitive.

Example : [^abc] will match any character except a,b,c .

11. [first-last] Character range: 

Matches any single character in the range from first to last.

Example : [a-zA-z] will match any character from a to z or A to Z.

12. The Escape Symbol (  \  ) 

If you want to match for the actual ‘+’, ‘.’ etc characters, add a backslash( \ ) before that character. This will tell the computer to treat the following character as a search character and consider it for a matching pattern.

Example : \d+[\+-x\*]\d+ will match patterns like "2+2"
and "3*9" in "(2+2) * 3*9".

13. Grouping Characters ( ) 

A set of different symbols of a regular expression can be grouped together to act as a single unit and behave as a block, for this, you need to wrap the regular expression in the parenthesis( ).

Example : ([A-Z]\w+) contains two different elements of the regular 
expression combined together. This expression will match any pattern
containing uppercase letter followed by any character.

14. Vertical Bar (  |  ) 

Matches any one element separated by the vertical bar (|) character.

Example :  th(e|is|at) will match words - the, this and that.

15. \number 

Backreference: allows a previously matched sub-expression(expression captured or enclosed within circular brackets ) to be identified subsequently in the same regular expression. \n means that group enclosed within the n-th bracket will be repeated at current position.

Example : ([a-z])\1 will match “ee” in Geek because the character 
at second position is same as character at position 1 of the match.

16. Comment ( ?# comment ) 

Inline comment: The comment ends at the first closing parenthesis.

Example : \bA(?#This is an inline comment)\w+\b

17. # [to end of line] 

X-mode comment. The comment starts at an unescaped # and continues to the end of the line.

Example :  (?x)\bA\w+\b#Matches words starting with A

Next Article
Regex Tutorial - How to write Regular Expressions?

K

kartik
Improve
Article Tags :
  • Misc
  • Pattern Searching
  • DSA
Practice Tags :
  • Misc
  • Pattern Searching

Similar Reads

    How to validate a Username using Regular Expressions in Java
    Given a string str which represents a username, the task is to validate this username with the help of Regular Expressions. A username is considered valid if all the following constraints are satisfied: The username consists of 6 to 30 characters inclusive. If the username consists of less than 6 or
    3 min read
    Perl | Regular Expressions
    Regular Expression (Regex or Regexp or RE) in Perl is a special text string for describing a search pattern within a given text. Regex in Perl is linked to the host language and is not the same as in PHP, Python, etc. Sometimes it is termed as “Perl 5 Compatible Regular Expressions“. To use the Rege
    2 min read
    Validate LEI(Legal Entity Identifier) using Regular Expression
    Given some Legal Entity Identifier, the task is to check whether they are valid using regular expressions. Rules for the valid LEI are: LEI code length is comprised of a 20-digit alphanumeric code.The first four characters are digits. Next two places are reserved for digit Zero.Next 12 characters ar
    6 min read
    std::regex_match, std::regex_replace() | Regex (Regular Expression) In C++
    Regex is the short form for “Regular expression”, which is often used in this way in programming languages and many different libraries. It is supported in C++11 onward compilers.Function Templates used in regex regex_match() -This function return true if the regular expression is a match against th
    3 min read
    String matches() Method in Java with Examples
    In Java, the matches() method in the String class checks if a string matches a specified regular expression. It is useful for validating input patterns and searching within strings. In this article, we will learn how to use the matches() method effectively in Java with examples to illustrate its fun
    3 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences