Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Special Syntax with Parentheses in Python
Python regular expressions support special syntax using parentheses for advanced pattern matching. These parentheses provide functionality like comments, case-insensitive matching, and non-capturing groups.
Comment Syntax
Use (?#comment) to add comments within regex patterns without affecting the match ?
import re
pattern = r'R(?#This is a comment)uby'
text = "Ruby programming"
match = re.search(pattern, text)
if match:
print(f"Found: {match.group()}")
else:
print("No match found")
Found: Ruby
Case-Insensitive Flag
Use (?i) to enable case-insensitive matching for the rest of the pattern ?
import re
pattern = r'R(?i)uby'
text = "RUBY programming"
match = re.search(pattern, text)
if match:
print(f"Found: {match.group()}")
else:
print("No match found")
Found: RUBY
Local Case-Insensitive Group
Use (?i:pattern) to apply case-insensitive matching only to a specific group ?
import re
pattern = r'R(?i:uby)'
text1 = "Ruby programming"
text2 = "RUBY programming"
text3 = "ruby programming"
for text in [text1, text2, text3]:
match = re.search(pattern, text)
if match:
print(f"Found in '{text}': {match.group()}")
else:
print(f"No match in '{text}'")
Found in 'Ruby programming': Ruby Found in 'RUBY programming': RUBY No match in 'ruby programming'
Non-Capturing Groups
Use (?:pattern) to group patterns without creating backreferences ?
import re
# With non-capturing group
pattern1 = r'rub(?:y|le)'
# With capturing group
pattern2 = r'rub(y|le)'
text = "ruby and rumble"
# Non-capturing group
matches1 = re.findall(pattern1, text)
print(f"Non-capturing: {matches1}")
# Capturing group
matches2 = re.findall(pattern2, text)
print(f"Capturing: {matches2}")
Non-capturing: ['ruby'] Capturing: ['y']
Comparison
| Syntax | Purpose | Creates Backreference? |
|---|---|---|
(?#comment) |
Add comments to regex | No |
(?i) |
Global case-insensitive | No |
(?i:pattern) |
Local case-insensitive | No |
(?:pattern) |
Non-capturing group | No |
Conclusion
Special parentheses syntax in Python regex provides powerful features for pattern matching. Use (?:) for grouping without backreferences and (?i:) for localized case-insensitive matching.
Advertisements
