README.md in regexp-examples-0.0.1 vs README.md in regexp-examples-0.0.2
- old
+ new
@@ -1,6 +1,7 @@
# regexp-examples
+[![Gem Version](https://badge.fury.io/rb/regexp-examples.svg)](http://badge.fury.io/rb/regexp-examples)
Extends the Regexp class with the method: Regexp#examples
This method generates a list of (some\*) strings that will match the given regular expression
@@ -20,11 +21,38 @@
# 'http://www.github.com', 'https://github.com', 'https://www.github.com']
/(I(N(C(E(P(T(I(O(N)))))))))*/.examples #=> ["", "INCEPTION", "INCEPTIONINCEPTION"]
/what about (backreferences\?) \1/.examples #=> ['what about backreferences? backreferences?']
```
-The current version is still very much under development, and contains various bugs/missing features...
-However, when completed, this will hopefully work for ALL regular expressions, *except for lookarounds*!
+## Supported syntax
+
+* All forms of repeaters (quantifiers), e.g. `/a*/`, `/a+/`, `/a?/`, `/a{1,4}/`, `/a{3,}/`, `a{,2}`
+* Boolean "Or" groups, e.g. `/a|b|c/`
+* Character sets (inluding ranges and negation!), e.g. `/[abc]/`, `/[A-Z0-9]/`, `/[^a-z]/`
+* Escaped characters, e.g. `/\n/`, `/\w/`, `/\D/` (and so on...)
+* Capture groups, and backreferences(!!), e.g. `/(this|that) \1/`
+* Arbitrarily complex combinations of all the above!
+
+## Not-Yet-Supported syntax
+
+I plan to add the following features to the gem (in order of most -> least likely), but have not yet got round to it:
+
+* Non-capture groups, e.g. `/(?:foo)/`
+* Named capture groups, e.g. `(?<name>bar)/`
+* Throw exceptions if illegal syntax (see below) is used
+* POSIX bracket expressions, e.g. `/[[:alnum:]]/`, `/[[:space:]]/`
+* Options, e.g. `/pattern/i`, `/foo.*bar/m`
+* Unicode characters, e.g. `/\p{L}/`, `/\p{Arabic}/`
+
+## Impossible features ("illegal syntax")
+
+The following features in the regex language can never be properly implemented into this gem because, put simply, they are not technically "regular"!
+If you'd like to understand this in more detail, there are many good blog posts out on the internet. The [wikipedia entry](http://en.wikipedia.org/wiki/Regular_expression)'s not bad either.
+
+* Lookarounds, e.g. `/foo(?=bar)/`, `/(?<!foo)bar/`
+* Anchors, e.g. `/\bword\b/`, `/line1\n^line2/` (although a special case could perhaps be made to allow `\A`, `^`, `\z` and `$` at the beginning/end of the pattern)
+
+(Note: Backreferences are not really "regular" either, but I got these to work with a bit of hackery!)
## Installation
Add this line to your application's Gemfile: