The public API of wreck
.
Notes:
nil
, this library does minimal argument
checking, since the rules for regular expressions vary from platform to
platform, and it is a first class requirement that callers be allowed to
construct platform specific regular expressions if they wish.java.util.regex.PatternSyntaxException
class.js/SyntaxError
.#"{}"
(an error on the JVM, fine but
nonsensical on JS) and #"{1}"
(ironically, fine but nonsensical on the
JVM, but an error on JS). 🤡wreck
is
fundamentally dependent on full fidelity regex <-> string round-tripping in
order to function, and JavaScript does not appear to support that.The public API of [`wreck`](https://github.com/pmonks/wreck). Notes: * Apart from passing through `nil`, this library does minimal argument checking, since the rules for regular expressions vary from platform to platform, and it is a first class requirement that callers be allowed to construct platform specific regular expressions if they wish. * As a result, all functions have the potential to throw platform-specific exceptions if the resulting regular expression is syntactically invalid. * On the JVM, these will typically be instances of the `java.util.regex.PatternSyntaxException` class. * On JavaScript, these will typically be a `js/SyntaxError`. * Platform specific behaviour is particularly notable for short / empty regular expressions, such as `#"{}"` (an error on the JVM, fine but nonsensical on JS) and `#"{1}"` (ironically, fine but nonsensical on the JVM, but an error on JS). 🤡 * Furthemore, JavaScript performs automatic escaping of the '/' character when a RegExp object is constructed, and (to my knowledge) there is no way to get the original source string back out. This is a problem as `wreck` is fundamentally dependent on full fidelity regex <-> string round-tripping in order to function, and JavaScript does not appear to support that.
(=' _)
(=' re1 re2)
(=' re1 re2 & more)
Equality for regexes, defined by having equal String
representations. This
means that equivalent regexes (e.g. #"..."
and #".{3}"
will not be
considered equal.
Notes:
Equality for regexes, defined by having equal `String` representations. This means that _equivalent_ regexes (e.g. `#"..."` and `#".{3}"` will _not_ be considered equal. Notes: * Some JavaScript runtimes that ClojureScript runs on correctly implement equality for regexes, but the JVM does not.
(alt & res)
Returns a regex that will match any one of res
, via alternation.
Notes:
res
will only appear once in the result.Returns a regex that will match any one of `res`, via alternation. Notes: * Duplicate elements in `res` will only appear once in the result. * Does _not_ wrap the result in a group, which, [because alternation has the lowest precedence in regexes](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_08), runs the risk of behaving unexpectedly if the result is then combined with further regexes. tl;dr - one of the grouping variants should _almost always_ be preferred.
(and' a b)
(and' a b s)
Returns an 'and' regex that will match a
and b
in any order, and with the
s
eparator regex (if provided) between them. This is implemented as
ASB|BSA
, which means that A and B must be distinct (must not match the same
text).
Notes:
alt
).Returns an 'and' regex that will match `a` and `b` in any order, and with the `s`eparator regex (if provided) between them. This is implemented as `ASB|BSA`, which means that A and B must be distinct (must not match the same text). Notes: * May optimise the expression (via de-duplication in [[alt]]). * Does _not_ wrap the result in a group, which, [because alternation has the lowest precedence in regexes](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_08), runs the risk of behaving unexpectedly if the result is then combined with further regexes. tl;dr - one of the grouping variants should _almost always_ be preferred.
(and-cg a b)
(and-cg a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[and']] then [[cg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(and-grp a b)
(and-grp a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[and']] then [[grp]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(and-ncg nm a b)
(and-ncg nm a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[and']] then [[ncg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(cg & res)
As for grp
, but uses a capturing group.
As for [[grp]], but uses a capturing group.
(esc s)
Escapes s
(a String
) for use in a regex, returning a String
. Note that
unlike most other fns in this namespace, this one does not support a regex
as an input, nor return a regex as an output.
Escapes `s` (a `String`) for use in a regex, returning a `String`. Note that unlike most other fns in this namespace, this one does _not_ support a regex as an input, nor return a regex as an output.
(exn n re)
Returns a regex where re
will match exactly n
times.
Returns a regex where `re` will match exactly `n` times.
(grp & res)
As for join
, but encloses the joined res
into a single non-capturing
group.
As for [[join]], but encloses the joined `res` into a single non-capturing group.
(join & res)
Returns a regex that is all of the res
joined together. Each element in
res
can be a regex, a String
or something that can be turned into a
String
(including numbers, etc.). Returns nil
when no res
are provided,
or they're all nil
.
Returns a regex that is all of the `res` joined together. Each element in `res` can be a regex, a `String` or something that can be turned into a `String` (including numbers, etc.). Returns `nil` when no `res` are provided, or they're all `nil`.
(n2m n m re)
Returns a regex where re
will match from n
to m
times.
Returns a regex where `re` will match from `n` to `m` times.
(ncg nm & res)
As for grp
, but uses a named capturing group named nm
. Returns nil
if
nm
is nil
or blank. Throws if nm
is an invalid name for a named capturing
group (alphanumeric only, must start with an alphabetical character, must be
unique within the regex).
As for [[grp]], but uses a named capturing group named `nm`. Returns `nil` if `nm` is `nil` or blank. Throws if `nm` is an invalid name for a named capturing group (alphanumeric only, must start with an alphabetical character, must be unique within the regex).
(nom n re)
Returns a regex where re
will match n
or more times.
Returns a regex where `re` will match `n` or more times.
(oom re)
Returns a regex where re
will match one or more times.
Returns a regex where `re` will match one or more times.
(opt re)
Returns a regex where re
is optional.
Returns a regex where `re` is optional.
(or' a b)
(or' a b s)
Returns an 'inclusive or' regex that will match a
or b
, or both, in any
order, and with the s
eparator regex (if provided) between them. This is
implemented as ASB|BSA|A|B
, which means that A and B must be distinct (must
not match the same text).
Notes:
alt
).Returns an 'inclusive or' regex that will match `a` or `b`, or both, in any order, and with the `s`eparator regex (if provided) between them. This is implemented as `ASB|BSA|A|B`, which means that A and B must be distinct (must not match the same text). Notes: * May optimise the expression (via de-duplication in [[alt]]). * Does _not_ wrap the result in a group, which, [because alternation has the lowest precedence in regexes](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_08), runs the risk of behaving unexpectedly if the result is then combined with further regexes. tl;dr - one of the grouping variants should _almost always_ be preferred.
(or-cg a b)
(or-cg a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[or']] then [[cg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(or-grp a b)
(or-grp a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[or']] then [[grp]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(or-ncg nm a b)
(or-ncg nm a b s)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[or']] then [[ncg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(qot s)
Quotes s
(a String
) for use in a regex, returning a regex. Note that
unlike most other fns in this namespace, this one does not support a regex
as an input.
Quotes `s` (a `String`) for use in a regex, returning a regex. Note that unlike most other fns in this namespace, this one does _not_ support a regex as an input.
(str' o)
Similar to 1-arg clojure.core/str
, but on ClojureScript attempts to correct
JavaScript's APPALLING stringification of RegExp objects.
Similar to 1-arg `clojure.core/str`, but on ClojureScript attempts to correct JavaScript's **APPALLING** stringification of RegExp objects.
(xor' a b)
Returns an 'exclusive or' regex that will match a
or b
, but not both.
This is identical to alt
called with 2 arguments, and is provided as a
convenience for those who might be building up large logic based regexes and
would prefer to use more easily understood logical operator names throughout.
Notes:
alt
).Returns an 'exclusive or' regex that will match `a` or `b`, but _not_ both. This is identical to [[alt]] called with 2 arguments, and is provided as a convenience for those who might be building up large logic based regexes and would prefer to use more easily understood logical operator names throughout. Notes: * May optimise the expression (via de-duplication in [[alt]]). * Does _not_ wrap the result in a group, which, [because alternation has the lowest precedence in regexes](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_08), runs the risk of behaving unexpectedly if the result is then combined with further regexes. tl;dr - one of the grouping variants should _almost always_ be preferred.
(xor-cg a b)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[xor']] then [[cg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(xor-grp a b)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[xor']] then [[grp]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(xor-ncg nm a b)
Notes:
-grp
fns, this one does not accept any number of res.alt
).[[xor']] then [[ncg]]. Notes: * Unlike most other `-grp` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(zom re)
Returns a regex where re
will match zero or more times.
Returns a regex where `re` will match zero or more times.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close