67 lines
1.6 KiB
ReStructuredText
67 lines
1.6 KiB
ReStructuredText
ctre
|
|
====
|
|
|
|
A compile-time (almost) PCRE-compatible regular expression matcher for C++.
|
|
|
|
Overview
|
|
========
|
|
|
|
Fast compile-time regular expressions with support for matching/searching/capturing at compile-time or runtime. ::
|
|
|
|
ctre::match<"REGEX">(subject); // C++20
|
|
"REGEX"_ctre.match(subject); // C++17 + N3599 extension
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
|
|
api
|
|
examples
|
|
regex_syntax
|
|
|
|
Supported compilers
|
|
===================
|
|
|
|
- clang 6.0+ (template UDL, C++17 syntax)
|
|
- xcode clang 10.0+ (template UDL, C++17 syntax)
|
|
- gcc 7.4+ (template UDL, C++17 syntax)
|
|
- gcc 9.0+ (C++17 & C++20 cNTTP syntax)
|
|
- MSVC 15.8.8+ (C++17 syntax only)
|
|
|
|
Basic Usage
|
|
===========
|
|
|
|
Template UDL syntax
|
|
-------------------
|
|
|
|
Compiler must support N3599 extension, as GNU extension in gcc (not in GCC 9.1+) and clang. ::
|
|
|
|
constexpr auto match(std::string_view sv) noexcept {
|
|
using namespace ctre::literals;
|
|
return "h.*"_ctre.match(sv);
|
|
}
|
|
|
|
If you need N3599 extension in GCC 9.1+ you can't use -pedantic mode and define the macro ``CTRE_ENABLE_LITERALS``.
|
|
|
|
C++17 syntax
|
|
------------
|
|
|
|
You can provide pattern as a constexpr ``ctll::fixed_string variable``. ::
|
|
|
|
static constexpr auto pattern = ctll::fixed_string{ "h.*" };
|
|
|
|
constexpr auto match(std::string_view sv) noexcept {
|
|
return ctre::match<pattern>(sv);
|
|
}
|
|
|
|
(this is tested in MSVC 15.8.8)
|
|
|
|
C++20 syntax
|
|
------------
|
|
|
|
Currently only compiler which supports cNTTP syntax ``ctre::match<PATTERN>(subject)`` is GCC 9+. ::
|
|
|
|
constexpr auto match(std::string_view sv) noexcept {
|
|
return ctre::match<"h.*">(sv);
|
|
}
|
|
|