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). 🤡RegExp
objects to String
s and back, something this library relies
upon and does extensively. The library makes a best effort to correct
JavaScript's problematic implementation, but because it's fundamentally
lossy there are some cases that (on ClojureScript only) may change your
regexes in unexpected (though not semantically significant) ways.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 fundamentally doesn't support lossless round-tripping of `RegExp` objects to `String`s and back, something this library relies upon and does extensively. The library makes a best effort to correct JavaScript's problematic implementation, but because it's fundamentally lossy there are some cases that (on ClojureScript only) may change your regexes in unexpected (though not semantically significant) ways.
(=' _)
(=' 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:
-cg
fns, this one does not accept any number of res.alt
).[[and']] then [[cg]]. Notes: * Unlike most other `-cg` 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:
-ncg
fns, this one does not accept any number of res.alt
).[[and']] then [[ncg]]. Notes: * Unlike most other `-ncg` 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
.
Notes:
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`. Notes: * In ClojureScript be cautious about using numbers in these calls, since JavaScript's number handling is a 🤡show. See [this unit test](https://github.com/pmonks/wreck/blob/dev/test/wreck/api_test.cljc#L93) for a worked example of the types of problems that can occur.
(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:
-cg
fns, this one does not accept any number of res.alt
).[[or']] then [[cg]]. Notes: * Unlike most other `-cg` 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:
-ncg
fns, this one does not accept any number of res.alt
).[[or']] then [[ncg]]. Notes: * Unlike most other `-ncg` fns, this one does _not_ accept any number of res. * May optimise the expression (via de-duplication in [[alt]]).
(qot re)
Quotes re
(anything that can be accepted by join
), returning a regex.
Quotes `re` (anything that can be accepted by [[join]]), returning a regex.
(str' o)
Returns the String
representation of o
, with special handling for
RegExp
objects on ClojureScript in an attempt to correct JavaScript's
APPALLING default stringification.
Returns the `String` representation of `o`, with special handling for `RegExp` objects on ClojureScript in an attempt to correct JavaScript's **APPALLING** default stringification.
(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:
-cg
fns, this one does not accept any number of res.alt
).[[xor']] then [[cg]]. Notes: * Unlike most other `-cg` 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:
-ncg
fns, this one does not accept any number of res.alt
).[[xor']] then [[ncg]]. Notes: * Unlike most other `-ncg` 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