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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a3bc383f665e3205f5127c07ec8abffdcdff80de170b80319bbab7584cbfd87 |
|
MD5 | fe5abc640b0913568426ddde96c3b29a |
|
BLAKE2b-256 | f44d6f7e066227c0baa97a579595a0af71ac3f414da69aec35792d3cceecd2fa |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09d02e8570fb6922b6523dbdd757a261c0570d7b07671efca389663d9f8e5bee |
|
MD5 | 2e7ec838e3a5ab9cc000b49fef51b3a2 |
|
BLAKE2b-256 | 44d4c9e1f708f741ccf40a7c896c8e58774ddcbe788ffaf0d80b3697d7528b5f |