Python regular expressions
Regular expressions are a powerful and standard method for searching, replacing and parsing complex strings. All regular expressions in Python are under the re module.
1 Commonly used matches
^ matches the beginning of the string
$ matches the end of the string
b matches the boundary of a word
d matches any number
D matches any non-numeric character
x? matches one Optional x (matches x character 1 or 0 times)
x* matches x 0 or more times
x+ matches x 1 or more times
x{n,m} at least n times and at most m times x
(a|b|c) either matches a, or matches b, or matches c
(x) generally represents a memory group, you can use the groups() function of the object returned by the re.search function to obtain it Its value
2 General purpose
#------------------------------------------------------------------------------- # coding: utf-8 # Purpose:正则表达式 # # Author: zdk # # Created: 26/02/2013 # Copyright: (c) zdk 2013 #------------------------------------------------------------------------------- import re if __name__ == '__main__': addr = "100 BROAD ROAD APT.3" print(re.sub("ROAD","RD",addr)) # 100 BRD RD APT.3 print(re.sub(r"\bROAD\b","RD",addr)) # 100 BROAD RD APT.3 pattern = ".*B.*(ROAD)?" print(re.search(pattern,"ROAD")) #None print(re.search(pattern,"B")) #<_sre.SRE_Match object at 0x0230F020><span style="background-color:#FAFAFA;font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;font-size:1em;line-height:1.5;"> </span>
(1) re.sub("ROAD","RD",addr) Use the re.sub function to search the string addr, and use "RD" to satisfy the expression "ROAD" "Replace
(2) re.sub(r"bROADb","RD",addr), "b" means "word boundary", in Python, because the character "" must be escaped in the string, This can get very cumbersome, so Python prefixes it with r to indicate that all characters in the string are not escaped.
(3) re.search(pattern, "ROAD") The re module has a search function. This function has two parameters, one is a regular expression and the other is a string. The search function returns a search function that can be described in a variety of ways. This matching object returns None if no match is found.
3 Loose regular expressions
The above are all "compact" type expressions, which are more difficult to read. Even if the meaning of the expression is clear now, there is no guarantee that it will be remembered a few months later. Therefore, Python allows users to use so-called loose regular expressions to complete the needs of inline documents. There are two main differences from general expressions in the following two aspects: whitespace characters are ignored. Spaces, tabs, and carriage returns do not match themselves (if you want to match a space in a loose regular expression, you do not need to escape it by adding a backslash before it)
Ignore Note. Like normal Python code, comments start with the # symbol and end at the end of the line.
#松散带有内联注释的正则表达式 pattern = """ ^ # begin of string M{0,3} # 0 to 3 M (CM|CD|D?C{0,3}) #CM or CD or D or D 0 to 3 C $ #end of string """ print(re.search(pattern,"MCM",re.VERBOSE)) #<_sre.SRE_Match object at 0x021BAF60> print(re.search(pattern,"M99",re.VERBOSE)) #None
(1) When using loose regular expressions, the most important thing is: an extra parameter re.VERBOSE must be passed, which is a constant of the re module, indicating that the regular expression to be matched is a Loose regular expressions. Pattern spaces and comments are ignored, but at the same time have better readability.
4 Case Studies: Parsing phone numbers
must match the following phone numbers:
800-555-1212
800 555 1212
800.555.1212
(800)555-1212
1-8 00-555 -1212
800-555-1212-1234
800-555-1212x1234
800-555-1212 ext.1234
work 1-(800) 555,1212 #1234
Format comparison Much we need to know The area code is 800, the trunk number is 555, and the other digits of the phone number are 1212. For those with extension numbers, we need to know that the extension number is 1234
phonePattern = re.compile(r''' # don't match beginging of string (\d{3}) # 3 digits \D* #any number of non-digits (\d{3}) # 3 digits \D* #any number of non-digits (\d{4}) # 4 digits \D* #any number of non-digits (\d*) #any number of digits ''',re.VERBOSE) print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')
print(phonePattern.search('work 1-(800)555.1212 # 1234').groups()) #('800', '555', '1212', '1234')
(1) A loose regular expression as above, first match 3 digit area codes (not necessarily from the first It starts with characters, so there is no use ^), then matches any number of non-numeric characters, then matches 3 numeric trunk numbers, then matches any number of non-numeric characters, then matches 4 numeric numbers, and then matches any number of non-numeric characters, then match any number of digit extension numbers, and then use the groups function to group them to get the correct phone number.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

To maximize the efficiency of learning Python in a limited time, you can use Python's datetime, time, and schedule modules. 1. The datetime module is used to record and plan learning time. 2. The time module helps to set study and rest time. 3. The schedule module automatically arranges weekly learning tasks.

Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

Pythonlistsarepartofthestandardlibrary,whilearraysarenot.Listsarebuilt-in,versatile,andusedforstoringcollections,whereasarraysareprovidedbythearraymoduleandlesscommonlyusedduetolimitedfunctionality.

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

Key applications of Python in web development include the use of Django and Flask frameworks, API development, data analysis and visualization, machine learning and AI, and performance optimization. 1. Django and Flask framework: Django is suitable for rapid development of complex applications, and Flask is suitable for small or highly customized projects. 2. API development: Use Flask or DjangoRESTFramework to build RESTfulAPI. 3. Data analysis and visualization: Use Python to process data and display it through the web interface. 4. Machine Learning and AI: Python is used to build intelligent web applications. 5. Performance optimization: optimized through asynchronous programming, caching and code
