Skip to main content

No project description provided

Project description

RegexFactory

Dynamically construct python regex patterns.

Examples

Matching Initials

Say you want a regex pattern to match the initials of someones name.

import re
from regexfactory import Amount, Range


pattern = Amount(Range("A", "Z"), 2, 3)

matches = pattern.findall(
    "My initials are BDP. Valorie's are VO"
)

print(matches)
['BDP', 'VO']

Matching Hex Strings

Or how matching both uppercase and lowercase hex strings in a sentence.

import re
from regexfactory import *

pattern = Optional("#") + Or(
    Amount(
        Set(
            Range("0", "9"),
            Range("a", "f")
        ),
        6
    ),
    Amount(
        Set(
            Range("0", "9"),
            Range("A", "F")
        ),
        6
    ),

)

sentence = """
My favorite color is #000000. I also like 5fb8a0. My second favorite color is #FF21FF.
"""

matches = pattern.findall(sentence)
print(matches)
['#000000', '5fb8a0', '#FF21FF']

Matching URLs

Or what if you want to match urls in html content?

from regexfactory import *


protocol = Amount(Range("a", "z"), 1, or_more=True)
host = Amount(Set(WORD, DIGIT, '.'), 1, or_more=True)
port = Optional(IfBehind(":") + Multi(DIGIT))
path = Multi(
    RegexPattern('/') + Multi(
        NotSet('/', '#', '?', '&', WHITESPACE),
        match_zero=True
    ),
    match_zero=True
)
patt = protocol + RegexPattern("://") + host + port + path



sentence = "This is a cool url, https://github.com/GrandMoff100/RegexFactory/ "
print(patt)

print(patt.search(sentence))
[a-z]{1,}://[\w\d.]{1,}(?:\d{1,})?(/([^/#?&\s]{0,})){0,}
<re.Match object; span=(15, 51), match='https://github.com/GrandMoff100/RegexFactory/'>

The Pitch

This library is really good at allowing you to intuitively understand how to construct a regex expression. It helps you identify what exactly your regular expression is, and can help you debug it. This is library is also very helpful for generating regex expressions on the fly if you find uses for it. You can also extend this library by subclassing RegexPattern and add your own support for different regex flavors. Like generating regex expresison with Perl5 extensions.

There you have it. This library is intuitive, extensible, modular, and dynamic. Why not use it?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

regexfactory-1.0.1.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

RegexFactory-1.0.1-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file regexfactory-1.0.1.tar.gz.

File metadata

  • Download URL: regexfactory-1.0.1.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regexfactory-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8a3bc383f665e3205f5127c07ec8abffdcdff80de170b80319bbab7584cbfd87
MD5 fe5abc640b0913568426ddde96c3b29a
BLAKE2b-256 f44d6f7e066227c0baa97a579595a0af71ac3f414da69aec35792d3cceecd2fa

See more details on using hashes here.

File details

Details for the file RegexFactory-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: RegexFactory-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for RegexFactory-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09d02e8570fb6922b6523dbdd757a261c0570d7b07671efca389663d9f8e5bee
MD5 2e7ec838e3a5ab9cc000b49fef51b3a2
BLAKE2b-256 44d4c9e1f708f741ccf40a7c896c8e58774ddcbe788ffaf0d80b3697d7528b5f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page