Abnormal expressions
Abnormal expressions (abnex) is an alternative to regular expressions (regex). This is a Python library but the abnex syntax could be ported to other languages.
Examples
Matching an email address
-
Regex
([\w\._-]+)@([\w\.]+)
-
Abnex
{[w"._-"]1++}"@"{[w"."]1++}
-
Abnex (spaced)
{[w "._-"]1++} "@" {[w "."]1++}
-
Abnex (expanded)
{ [w "._-"]1++ } "@" { [w "."]1++ }A more advanced pattern:
{{{[a-z '_']1++} {[a-z 0-9 '_-.']0++}} '@' {{[a-z 0-9]1++} '.' {[a-z 0-9]1++} {[a-z 0-9 '-_.']0++}} {[a-z 0-9]1++}}.
Why is Abnex Better?
- It's easier to read, write and understand.
- You can use spaces inside of the expression, you can also "expand" it, i.e. write it over multiple lines and use indention.
- You don't have to use a backslashes all the time
- More logical/common symbols like
!for not,{}for groups,1++,0++,0+for: one or more, zero or more, zero or one. - It's easier to see if a symbol is an actual symbol you are searching for or if it's a regex character, ex:
- Regex:
[\w-]+@[\w-_]+ - Abnex:
[w "-"]1++ "@" [w "-"]1++
- Regex:
Documentation
Regex on right after -> is the abnex equivalent
Anchors
- Start of string, or start of line in multi-line pattern
^->->
- End of string, or end of line in multi-line pattern
$-><-
- Start of string
\A->s>
- End of string
\Z-><s
- Word boundary
\b->:
- Not word boundary
\B->!:
- Start of word
\<->w>
- End of word
\>-><w
Character Classes
- Control character
\c->c
- White space
\s->_
- Not white space
\S->!_
- Digit
\d->d
- Not digit
\D->!d
- Word
\w->w
- Not word
\W->!w
- Hexadecimal digit
\x->x
- Octal digit
\o->o
Quantifiers
- 0 or more
*->0++
- 1 or more
+->1++
- 0 or 1
?->0+
Groups and Ranges
- Any character except new line (\n)
.->*
- a or b
a|b->"a"|"b"
- Group
(...)->{...}
- Passive (non-capturing) group
(?:...)->{#...}
- Range (a or b or c)
[abc]->['abc']or["a" "b" "c"]
- Not in set
[^...]->[!...]
- Lower case letter from a to Z
[a-q]->[a-z]
- Upper case letter from A to Q
[A-Q]->[A-Q]
- Digit from 0 to 7
[0-7]->[0-7]
Standards
What is the recommended way to write abnexes
- Use spaces between characters in character sets:
- Correct:
[w "_-"] - Incorrect:
[w"_-"]
- Correct:
- Put multiple exact characters between the same quotes in character sets:
- Correct:
["abc"] - Incorrect:
["a" "b" "c"], especially incorrect:["a""b""c"]
- Correct:
- Put spaces between groups:
- Correct:
{w} "." {w} - Incorrect:
{w}"."{w}
- Correct:
Examples:
Match for an email address:
- Regex:
[\w-\._]+@[\w-\.]+
- Abnex (following standards):
{[w "-._"]1++} "@" {[w "-."]1++}
- Abnex (not following standards):
{[w"-._"]1++}"@"{[w"-."]1++}
Functions (In Python)
Abnex has most functions from the re library, but it also has som extra functionality like: last() & contains().
Common functions between re and abnex
Regex on right after -> is the abnex equivalent
match()->match()findall()->all()split()->split()sub()->replace()subn()->replace_count()search()->first()
Special to abnex
holds(): whether or not a string matches an expression (bool).contains(): wheter or not a string contains a match (bool).last(): the last match in a string.
Metadata
Release files for abnex 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| abnex-1.0.2.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| abnex-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.8 kB
Release files / abnex-1.0.2.tar.gz
| Download URL | abnex-1.0.2.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fa64afa5bf3f56a76c9ce82257b4fb682cf91c73975b2a0274c4be6c567669f0
|
|
BLAKE2b-256 checksum How to use checksums |
d24c7ae880b40146a03df4b13feb200f78d2374771457c46910d7b3428957aa0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.6 CPython/3.9.5 Darwin/20.5.0
|
Release files / abnex-1.0.2-py3-none-any.whl
| Download URL | abnex-1.0.2-py3-none-any.whl |
|---|---|
| Size | 28.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c7ba7ef1335f76253a14fddc4a57d960769049a8b4675855b7e2b2f1c711ced
|
|
BLAKE2b-256 checksum How to use checksums |
40c8ad98a93b1c9409e6128a0f49e64e1644195529749df551e02e31b5c94e81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.6 CPython/3.9.5 Darwin/20.5.0
|