ExpExp expands expressions. That's kinda the opposite of what regular expressions do.
For example ab(cd|[xy])
expands to
abcd
,abx
andaby
.
The following expressions can be expanded by the library:
Disjunction:
abc[xyz]
will be expanded to
abcx
abcy
abcz
Named character classes:
Instead of listing all disjunct characters, you can also select from a set of available character classes:
upper
contains uppercase characters (from ASCII)lower
contains lowercase characters (from ASCII)digit
contains digitsspace
contains space characterspunct
contains punctuation characters
You can use named character classes by wrapping them in colons:
[:upper:]
Dot Operator:
abc.
will be expanded to
abcA
abcB
- …
The Dot opterator does not expand to every character, but only to A-Za-z0-9_
.
Parantheses:
ab(c)
will be expanded to
abc
Repetition:
The repetition operator allows to repeat the previous character(s). If only one value is given the previous character is repeated that often, if two values are given the character is multiplied with each value in the given range. {,3}
is the same as {0,3}
.
a{3}
will expand to
aaa
Or with a minimum and a maximum value:
a{1,3}
will expand to
a
aa
aaa
This also works with disjunctions and parentheses.
Alternation:
abc|xyz
will be expanded to
abc
xyz
Optional:
abc?
will be expanded to
abc
ab
This also works with parantheses:
abc(xyz)?
will be expanded to
abc
abcxyz
The optional operator has thus the same effect as {0,1}
.
Pattern | Count | Expansion |
---|---|---|
abc |
1 | abc |
ab(c) |
1 | abc |
[abc] |
3 | a , b , c |
a{3} |
1 | aaa |
a{} |
1 | a |
a{1,3} |
3 | a , aa , aaa |
a{,3} |
4 | , a , aa , aaa |
a(bc){2} |
1 | abcbc |
a(bc){1,2} |
2 | abcbc , abc |
a(bc){,2} |
3 | a , abc , abcbc |
[ab]{2} |
2 | aa , bb |
ab. |
63 | abA , abB , aba , ab0 , ab_ , ... |
abc|xyz |
2 | abc , xyz |
a|b|c |
3 | a , b , c |
ab(c|d) |
2 | abc , abd |
ab(cde|[xyz]) |
4 | abcde , abx , aby , abz |
abc? |
2 | abc , ab |
abc(xyz)? |
2 | abc , abcxyz |
Instantiate the object and call the expand()
method with the pattern:
use Bc\ExpExp\ExpExp;
$e = new ExpExp();
$result = $e->expand('abc|xyz');
More examples can be found in the test cases.
- Dot operator matches
word
character class
- Named character classes
- Changed namespace to
Braincrafted
- Added repetition operator
{}
- Completely rewritten to be easier and better extensible
- Improved test suite
- Better code style
- Better in-code documentation
- Moved to
Bc
namespace - Call
expand()
with pattern - Better documentation
ExpExp is licensed under The MIT License. See the LICENSE
file in the projects root directory for more information.