v0.2.2 2013-10-20 21:25 UTC

This package is auto-updated.

Last update: 2022-05-20 04:36:33 UTC


ExpExp expands expressions. That's kinda the opposite of what regular expressions do.

For example ab(cd|[xy]) expands to

  • abcd,
  • abx and
  • aby.

Build Status Scrutinizer Quality Score Code Coverage



The following expressions can be expanded by the library:



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 digits
  • space contains space characters
  • punct contains punctuation characters

You can use named character classes by wrapping them in colons:


Dot Operator:


will be expanded to

  • abcA
  • abcB

The Dot opterator does not expand to every character, but only to A-Za-z0-9_.



will be expanded to

  • abc


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}.


will expand to

  • aaa

Or with a minimum and a maximum value:


will expand to

  • a
  • aa
  • aaa

This also works with disjunctions and parentheses.



will be expanded to

  • abc
  • xyz



will be expanded to

  • abc
  • ab

This also works with parantheses:


will be expanded to

  • abc
  • abcxyz

The optional operator has thus the same effect as {0,1}.

More examples

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.


Version 0.2.2 (2013-10-20)

  • Dot operator matches word character class

Version 0.2.1 (2013-10-19)

  • Named character classes

Version 0.2 (2013-10-19)

  • Changed namespace to Braincrafted
  • Added repetition operator {}
  • Completely rewritten to be easier and better extensible
  • Improved test suite

Version 0.1.1 (2013-10-16)

  • Better code style
  • Better in-code documentation

Version 0.1 (2013-10-16)

  • 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.

Bitdeli Badge