
Security News
New React Server Components Vulnerabilities: DoS and Source Code Exposure
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.
safe-regex
Advanced tools
A library to organise the unit tests for your regular expressions.
Pip this library
pip install safe-regex
Separate your regex from your main code into yaml files with positive and negative examples. Give these files a .re.yaml extension
---
pattern: "^[a-z]{3}$"
description: a three letter acronym
test_cases:
- text: abc
matches: [abc]
- text: xyz
matches: [xyz]
# These examples do not match anything
- text: 123
- text: r2d2
- text: abcd
The change your python code to load the regex from the yaml file.
import safe_regex
my_re = safe_regex.RegularExpression.from_yaml('my_regex', folder="my_folder")
# then use as a normal re.Pattern object
re_match_object = my_re.match('cat')
In your unit tests loop through your regular expression folder and validate everything.
import os
from safe_regex import RegularExpression
# pytest 6.1 example
def test_regex():
""" verify all regular expressions are valid """
regex_directory = "my_folder"
for filename in os.listdir(regex_directory):
if filename.endswith(".re.yaml"):
with open(os.path.join(regex_directory, filename)) as yaml_file:
yaml_data = yaml.safe_load(yaml_file)
sr = RegularExpression(**yaml_data)
sr.test()
When a regular expression's test fails it helpfully prepares a link to regexr.com where you can inspect and debug the problem. For example: https://regexr.com/?expression=%2F%5E%5Ba-z%5D%7B3%7D%2Fgms&text=These+should+all+match%0Aabc%0Axyz%0ANone+of+these+should+match%0A123%0Aabcd%0Ar2d2
rather than passing the folder specify SAFE_REGEX_PATH as an environment variable.
Development is being performed on OS X with pyenv (with its .python_version file) and direnv (with its .envrc file).
In order to set up a development environment:
brew install direnv pyenv
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
exec "${SHELL}"
pyenv install $(cat ./.python-version)
# pyenv install takes a while
direnv allow
# direnv allow triggers the creation and activation of the virtual environment
pip install -r requirements.txt
pip install -r tests/requirements-testing.txt
pip install --editable .
# Then validate by running
pytest
FAQs
Embeds unit tests with regular expressions
We found that safe-regex demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.