![]() |
|
[Tut] Regex Special Characters – Examples in Python Re - Printable Version +- Sick Gaming (https://sickgaming.net) +-- Forum: Programming (https://sickgaming.net/forum-76.html) +--- Forum: Python (https://sickgaming.net/forum-83.html) +--- Thread: [Tut] Regex Special Characters – Examples in Python Re (/thread-93779.html) |
[Tut] Regex Special Characters – Examples in Python Re - xSicKxBot - 02-27-2020 Regex Special Characters – Examples in Python Re Regular expressions are a strange animal. Many students find them difficult to understand – do you? I realized that a major reason for this is simply that they don’t understand the special regex characters. To put it differently: understand the special characters and everything else in the regex space will come much easier to you. Regular expressions are built from characters. There are two types of characters: literal characters and special characters. Literal Characters Let’s start with the absolute first thing you need to know with regular expressions: a regular expression (short: regex) searches for a given pattern in a given string. What’s a pattern? In its most basic form, a pattern can be a literal character. So the literal characters Code: 'a'Code: 'b'Code: 'c'For example, you can search for the regex pattern Code: 'a'Code: 'hello world'Code: 'a'Code: 'hello woman'Based on the simple insight that a literal character is a valid regex pattern, you’ll find that a combination of literal characters is also a valid regex pattern. For example, the regex pattern Code: 'an'Code: 'hello woman'Summary: Regular expressions are built from characters. An important class of characters are the literal characters. In principle, you can use all Unicode literal characters in your regex pattern. Special Characters However, the power of regular expressions come from their abstraction capability. Instead of writing the character set Code: [abcdefghijklmnopqrstuvwxyz]Code: [a-z]Code: \wSo what are the special characters you can use in your regex patterns? Let’s have a look at the following table that contains all special characters in Python’s Code: reSpecial Character | Meaning Code: \nThe newline symbol is not a special symbol particular to regex only, it’s actually one of the most widely-used, standard characters. However, you’ll see the newline character so often that I just couldn’t write this list without including it. For example, the regex Code: 'hello\nworld'Code: 'hello'Code: 'world'Code: \tThe tabular character is, like the newline character, not a “regex-specific” symbol. It just encodes the tabular space Code: ' 'Code: 'hello\n\tworld'Code: 'hello'Code: ' world'Code: \sThe whitespace character is, in contrast to the newline character, a special symbol of the regex libraries. You’ll find it in many other programming languages, too. The problem is that you often don’t know which type of whitespace is used: tabular characters, simple whitespaces, or even newlines. The whitespace character Code: '\s'Code: '\s*hello\s+world'Code: ' \t \n hello \n \n \t world'Code: 'hello world'Code: \SThe whitespace-negation character matches everything that does not match Code: \sCode: \wThe word character regex simplifies text processing significantly. It represents the class of all characters used in typical words ( Code: A-ZCode: a-zCode: 0-9Code: '_'Code: '\w+'Code: 'hello'Code: 'bye'Code: 'Python'Code: 'Python_is_great'Code: \WThe word-character-negation. It matches any character that is not a word character. Code: \bThe word boundary is also a special symbol used in many regex tools. You can use it to match, as the name suggests, the boundary between the a word character ( Code: \wCode: \WCode: \dThe digit character matches all numeric symbols between 0 and 9. You can use it to match integers with an arbitrary number of digits: the regex Code: '\d+'Code: '10'Code: '1000'Code: '942'Code: '99999999999'Code: \DMatches any non-digit character. This is the inverse of Code: \dCode: [^0-9]But these are not all characters you can use in a regular expression. There are also meta characters for the regex engine that allow you to do much more powerful stuff. A good example is the asterisk operator that matches “zero or more” occurrences of the preceding regex. For example, the pattern Code: .*txtCode: 'txt'Code: .Code: *Regex Meta Characters Feel free to watch the short video about the most important regex meta characters: Next, you’ll get a quick and dirty overview of the most important regex operations and how to use them in Python. Here are the most important regex operators: Meta Character | Meaning Code: .The wild-card operator (dot) matches any character in a string except the newline character Code: '\n'Code: '...'Code: 'abc'Code: 'cat'Code: 'dog'Code: *The zero-or-more asterisk operator matches an arbitrary number of occurrences (including zero occurrences) of the immediately preceding regex. For example, the regex ‘cat*’ matches the strings Code: 'ca'Code: 'cat'Code: 'catt'Code: 'cattt'Code: 'catttttttt'Code: ?The zero-or-one operator matches (as the name suggests) either zero or one occurrences of the immediately preceding regex. For example, the regex ‘cat?’ matches both strings Code: ‘ca’Code: ‘cat’Code: ‘catt’Code: ‘cattt’Code: ‘catttttttt’Code: +The at-least-one operator matches one or more occurrences of the immediately preceding regex. For example, the regex Code: ‘cat+’Code: ‘ca’Code: ‘t’Code: ‘cat’Code: ‘catt’Code: ‘cattt’Code: ^The start-of-string operator matches the beginning of a string. For example, the regex Code: ‘^p’Code: ‘python’Code: ‘programming’Code: ‘lisp’Code: ‘spying’Code: ‘p’Code: $The end-of-string operator matches the end of a string. For example, the regex Code: ‘py$’Code: ‘main.py’Code: ‘pypy’Code: ‘python’Code: ‘pypi’Code: A|BThe OR operator matches either the regex A or the regex B. Note that the intuition is quite different from the standard interpretation of the or operator that can also satisfy both conditions. For example, the regex Code: ‘(hello)|(hi)’Code: ‘hello world’Code: ‘hi python’Code: ABThe AND operator matches first the regex A and second the regex B, in this sequence. We’ve already seen it trivially in the regex Code: ‘ca’Code: ‘c’Code: ‘a’Note that I gave the above operators some more meaningful names (in bold) so that you can immediately grasp the purpose of each regex. For example, the Code: ‘^’Let’s dive into some examples! Examples Code: import re text = ''' Ha! let me see her: out, alas! he's cold: Her blood is settled, and her joints are stiff; Life and these lips have long been separated: Death lies on her like an untimely frost Upon the sweetest flower of all the field. ''' print(re.findall('.a!', text)) '''
Finds all occurrences of an arbitrary character that is
followed by the character sequence 'a!'.
['Ha!'] ''' print(re.findall('is.*and', text)) '''
Finds all occurrences of the word 'is',
followed by an arbitrary number of characters
and the word 'and'.
['is settled, and'] ''' print(re.findall('her:?', text)) '''
Finds all occurrences of the word 'her',
followed by zero or one occurrences of the colon ':'.
['her:', 'her', 'her'] ''' print(re.findall('her:+', text)) '''
Finds all occurrences of the word 'her',
followed by one or more occurrences of the colon ':'.
['her:'] ''' print(re.findall('^Ha.*', text)) '''
Finds all occurrences where the string starts with
the character sequence 'Ha', followed by an arbitrary
number of characters except for the new-line character. Can you figure out why Python doesn't find any?
[] ''' print(re.findall('\n$', text)) '''
Finds all occurrences where the new-line character '\n'
occurs at the end of the string.
['\n'] ''' print(re.findall('(Life|Death)', text)) '''
Finds all occurrences of either the word 'Life' or the
word 'Death'.
['Life', 'Death'] '''In these examples, you’ve already seen the special symbol Code: \nWhere to Go From Here You’ve learned all special characters of regular expressions, as well as meta characters. This will give you a strong basis for improving your regex skills. If you want to accelerate your skills, you need a good foundation. Check out my brand-new Python book “Python One-Liners (Amazon Link)” which boosts your skills from zero to hero—in a single line of Python code! |