# Regular Expressions

**Regular expressions** are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. The first thing to recognize when using regular expressions is that **everything is essentially a character**, and we are writing patterns to match a specific sequence of characters (also known as a string).

Generally, the key part to process the text with regular expressions is regular expression engine and it is represented by **`Regex`** class in c#. The `Regex` class is available with **System.Text.RegularExpressions** namespace.

|            |                                |
| ---------- | ------------------------------ |
| abc…       | Letters                        |
| 123…       | Digits                         |
| \d         | Any Digit                      |
| \D         | Any Non-digit character        |
| .          | Any Character                  |
| \\.        | Period                         |
| \[abc]     | Only a, b, or c                |
| \[^abc]    | Not a, b, nor c                |
| \[a-z]     | Characters a to z              |
| \[0-9]     | Numbers 0 to 9                 |
| \w         | Any Alphanumeric character     |
| \W         | Any Non-alphanumeric character |
| {m}        | m Repetitions                  |
| {m,n}      | m to n Repetitions             |
| \*         | Zero or more repetitions       |
| +          | One or more repetitions        |
| ?          | Optional character             |
| \s         | Any Whitespace                 |
| \S         | Any Non-whitespace character   |
| ^…$        | Starts and ends                |
| (…)        | Capture Group                  |
| (a(bc))    | Capture Sub-group              |
| (.\*)      | Capture all                    |
| (abc\|def) | Matches abc or def             |

#### Example

Following is the example of validating whether the given text is in proper email format or not using `Regex` class in C#.

```csharp
using System;
using System.Text.RegularExpressions;

namespace TutlaneExamples
{
    class Program
    {
        static void Main(string[] args)
        {
            string email = "support@tutlane.com";
            var result = Regex.IsMatch(email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
            
            Console.Write("Is valid: {0} ", result);
            Console.ReadLine();
        }
    }
}
```

#### C# Regex Class Methods

| Method  | Description                                                                                                         |
| ------- | ------------------------------------------------------------------------------------------------------------------- |
| IsMatch | It will determine whether the given input string matching with regular expression pattern or not.                   |
| Matches | It will return one or more occurrences of text that matches the regular expression pattern.                         |
| Replace | It will replace the text that matches the regular expression pattern.                                               |
| Split   | It will splits the string into an array of substrings at the positions that matches the regular expression pattern. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dotnetweb30-ke.gitbook.io/ke/construction-core/programming-language/regular-expressions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
