Skip to main content

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)

Source distribution for regexa 0.1.1
File Size Uploaded
regexa-0.1.1.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for regexa 0.1.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page