Regexa - Python Regex Utility Library
Regexa is a comprehensive Python library that simplifies working with regular expressions for common text processing tasks. It provides an easy-to-use interface for validations, extractions, and text processing operations.
Features
- Email, phone number and URL validation
- Password strength validation with detailed feedback
- Text extraction (emails, phones, URLs, hashtags, mentions etc)
- Date extraction in multiple formats
- File path processing
- Network validations (IP address, MAC address)
- Credit card validation
- Text cleaning utilities
- Pattern matching and counting
Installation
pip install regexa
Basic Usage
Initialization
from regexa import Regexa
rx = Regexa()
1. Email validation
email = "john.doe@example.com"
print(f"Is email valid? {rx.match_email(email)}")
# Result: Is email valid? True
# Comment: The email is valid as it follows the standard email format
2. Password strength check
password = "MyStr0ng#Pass"
strength = rx.validate_password_strength(password)
print(f"Password strength: {strength['strength']}")
print(f"Password feedback: {strength['feedback']}")
# Result:
# Password strength: Excellent
# Password feedback: ['Password length sufficient', 'Has uppercase letters', 'Has lowercase letters', 'Has numbers', 'Has special characters']
# Comment: The password is excellent because it meets all criteria: length, uppercase, lowercase, numbers, and special characters
3. Extract all data from text
text = """
Contact me at john.doe@example.com or call +6281234567890
Visit our website: https://example.com
Follow us @company #tech #python
Meeting on 25/12/2023 and 2023-12-31
Credit card: 4111111111111111
"""
extracted = rx.extract_all(text)
print("\nExtracted data:")
for key, value in extracted.items():
print(f"{key}: {value}")
# Result:
# emails: ['john.doe@example.com']
# phones: ['+6281234567890']
# urls: ['https://example.com']
# hashtags: ['#tech', '#python']
# mentions: ['@company']
# numbers: ['6281234567890', '25', '12', '2023', '2023', '12', '31']
# words: ['Contact', 'me', 'at', 'john', 'doe', 'example', 'com', ...]
# Comment: Successfully extracted all different types of data from the text
4. Date extraction
dates = rx.extract_dates(text)
print("\nFound dates:")
for date in dates:
print(f"Date: {date['date']} (Format: {date['format']})")
# Result:
# Date: 25/12/2023 (Format: dd/mm/yyyy)
# Date: 2023-12-31 (Format: yyyy-mm-dd)
# Comment: Detected dates in different formats
5. URL validation
url = "https://example.com"
print(f"\nIs URL valid? {rx.match_url(url)}")
# Result: Is URL valid? True
# Comment: URL is valid as it contains the correct protocol and domain format
6. Credit card validation
card_number = "4111111111111111"
card_validation = rx.validate_credit_card(card_number)
print(f"\nCredit card validation: {card_validation}")
# Result: Credit card validation: {'is_valid': True, 'card_type': 'visa', 'number': '4111111111111111'}
# Comment: Detected as a valid Visa card number
7. Clean text
cleaned_text = rx.clean_text("Hello, World! @#$%")
print(f"\nCleaned text: {cleaned_text}")
# Result: Cleaned text: Hello World
# Comment: Removed all special characters, leaving only alphanumeric characters and spaces
8. IP validation
ip = "192.168.1.1"
ip_validation = rx.validate_ip(ip)
print(f"\nIP validation: {ip_validation}")
# Result: IP validation: {'is_valid': True, 'type': 'IPv4', 'private': True}
# Comment: Valid IPv4 address identified as a private IP address
Documentation
Email Validation
rx.match_email(text: str) -> bool
Validates if a string is a properly formatted email address.
Phone Number Validation
rx.match_phone_id(text: str) -> bool
Validates Indonesian phone numbers.
URL Validation
rx.match_url(text: str) -> bool
Checks if a string is a valid URL with HTTP/HTTPS protocol.
Password Validation
rx.validate_password_strength(password: str) -> Dict[str, Any]
Validates password strength and provides detailed feedback:
- Score (0-5)
- Strength level
- Specific feedback
- Overall validity
Text Extraction
rx.extract_all(text: str) -> Dict[str, List[str]]
Extracts various elements from text:
- Email addresses
- Phone numbers
- URLs
- Hashtags
- @mentions
- Numbers
- Words
Text Cleaning
rx.clean_text(text: str, remove_spaces: bool = False) -> str
Cleans text by removing special characters. Optional space removal.
Date Extraction
rx.extract_dates(text: str) -> List[Dict[str, Any]]
Extracts dates in various formats:
- dd/mm/yyyy
- yyyy-mm-dd
- dd-mm-yyyy
- Natural format (e.g. "25 December 2023")
File Path Processing
rx.extract_filename(path: str) -> Dict[str, str]
Extracts components from file paths:
- Directory
- Filename
- Extension
- Full path
IP Address Validation
rx.validate_ip(ip: str) -> Dict[str, Any]
Validates IPv4 and IPv6 addresses and provides:
- Validity status
- IP version
- Private network status (IPv4)
Pattern Matching
rx.count_matches(text: str, pattern: str) -> Dict[str, Any]
Counts pattern matches in text and provides:
- Match count
- Match positions
- Used pattern
Credit Card Validation
rx.validate_credit_card(number: str) -> Dict[str, Any]
Validates credit card numbers and identifies card type:
- Visa
- Mastercard
- American Express
- Discover
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Release files for regexa 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| regexa-0.1.1.tar.gz | 9.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| regexa-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.1 kB
Release files / regexa-0.1.1.tar.gz
| Download URL | regexa-0.1.1.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
081bbb8bc4d85c167e8782a9548a6be6ba5fa0bf742a38b6a9708b2158a9d4d0
|
|
BLAKE2b-256 checksum How to use checksums |
0cfd5f7eeaf28b5d5e300199ae141d505257ea01f327c3a5ad425b5f03e9b339
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.18
|
Release files / regexa-0.1.1-py3-none-any.whl
| Download URL | regexa-0.1.1-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f55f28c9f81bab7ad8357ba125b57ea33b4e44cde2cfd9fae6dfeab9261ae375
|
|
BLAKE2b-256 checksum How to use checksums |
46d5ab459cd78e85fd3baf53cc417b0408097c4ef76eade63130f46a774cc491
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.18
|