Skip to content

Releases: 3F/regXwild

1.4

07 Mar 22:00
@3F 3F
ac1f478
Compare
Choose a tag to compare

💾 Public release. regXwild 1.4

x64 + x32 Unicode + MultiByte modules
MultiByte x64 x86
Unicode x64 x86
📑 Changelog
  • NEW: Modern match() method for ESS implementation with bitwise options:
bool match(const tstring& input, const tstring& pattern, const EngineOptions& options, MatchResult* result);

Searches an input string for a substring that matches a pattern.
Use F_ICASE = 0x001 to ignore case sensitivity when matching.

  • NEW: Implemented >c metasymbol.

Modern > as [^c]str | [^c]$

This is default behavior using match().
To activate legacy > as [^/]str | [^/]$ use F_LEGACY_ANYSP = 0x080

  • NEW: Implemented F_MATCH_RESULT = 0x002 flag to collect additional data for the MatchResult.
EssRxW::MatchResult m;
rxw.match
(
    _T("number = '8888'; //TODO: up"),
    _T("'+'"),
    EssRxW::EngineOptions::F_MATCH_RESULT,
    &m
);
//m.start = 9
//m.end = 15
  • NEW: Added replace() method for ESS implementation.
bool replace(tstring& input, const tstring& pattern, const tstring& replacement, const EngineOptions& options);

In a specified input, replaces first substring that match a specified pattern with a specified replacement string.

  • NEW: Implemented optional offset for match() and replace() methods. ESS impl.
bool replace(tstring& input, const tstring& pattern, const tstring& replacement, udiff_t offset, const EngineOptions& options)
bool match(const tstring& input, const tstring& pattern, udiff_t offset, const EngineOptions& options, MatchResult* result)

udiff_t offset - The starting position to start matching.

  • NEW: Implemented F_MATCH_ALL = 0x004. Do not finish on first match in replace() method.

  • NEW: New C-export functions in common.h PE/Invoke or other outside environments.

bool replace(TCHAR* input, const TCHAR* pattern, const TCHAR* replacement, flagcfg_t options);    
bool replaceOfs(TCHAR* input, const TCHAR* pattern, const TCHAR* replacement, udiff_t offset, flagcfg_t options);    
bool match(const TCHAR* input, const TCHAR* pattern, flagcfg_t options, EssRxW::MatchResult* result);    
bool matchOfs(const TCHAR* input, const TCHAR* pattern, udiff_t offset, flagcfg_t options, EssRxW::MatchResult* result);    
bool replaceTo(const TCHAR* input, const TCHAR* pattern, const TCHAR* replacement, TCHAR* to, udiff_t offset, flagcfg_t options);
  • FIXED: Fixed SINGLE ms for +++ and system+ or like.

  • FIXED: Fixed END ms $ and BEGIN ms ^ when using other available ms.

  • FIXED: Fixed ##?? ++?? for " = 12" -> "= 123".

  • FIXED: Fixed an early return when matching.

  • FIXED: Fixed Compiler Error such C2758 etc for C99/MSVC10 compilers (VS2010).

  • FIXED: Fixed NuGet package use for native C/C++ projects.

  • CHANGED: Implemented MS combinations for END $ such as *$, ??$, +$.

  • CHANGED: Implemented MS combinations for BEGIN ^ such as ^+, ^#, ^?.

  • CHANGED: Added aliases EssRxW/ExtRxW/RxW to the main algorithms.

  • CHANGED: Added RXW_UNICODE for user targets when CharacterSet is Unicode.

  • CHANGED: AlgorithmEss::search() was marked as obsolete and can be removed in future major versions.

  • CHANGED: regXwildAPI.h was marked as obsolete. Please use regXwild.common.h or regXwild.h.

  • CHANGED: Most our types are spaced now as regXwild::rxwtypes.

  • NOTE: You can find various flexible use for .NET in our new dotnet-test project through Conari engine:
    https://github.com/3F/Conari
    https://github.com/3F/regXwild

1.3

10 Aug 16:12
@3F 3F
f3bd722
Compare
Choose a tag to compare
1.3

💾 Public release. regXwild 1.3

x64 + x32 Unicode + MultiByte modules
MultiByte x64 x86
Unicode x64 x86
Changelog:
  • NEW: Quantifiers are now standardized as follows:
    https://github.com/3F/regXwild#-quantifiers

    regex regXwild n
    .* * 0+
    .+ + 1+
    .? ? 0; 1
    .{1} # 1
    .{2} ## 2
    .{2, } ++ 2+
    .{0, 2} ?? 0 - 2
    .{2, 4} ++?? 2 - 4
    (?:.{2}|.{4}) ##?? 2; 4
    .{3, 4} +++? 3 - 4
    (?:.{1}|.{3}) #?? 1; 3
  • NEW: Second-order Quantifiers. Added support for ++
    regex equivalent .{n, }

  • NEW: Quantifiers. Implemented ++?? support for ranges. Part of PR #7.

    {n, m} where n > 0 and m > n
    
        n == +
        m == ?
    
    • ++?? (2 - 4)
    • +??? (1 - 4)
    • +++? (3 - 4)
    • +? (1 - 2)

    etc. See unit-tests.

  • NEW: Quantifiers. Implemented ##?? support for ranges. Part of PR #7.

    {n, m} where n > 0 and m > n
    
        n == #
        m == ?
    
    • ##?? (2 | 4)
    • #??? (1 | 4)
    • ###? (3 | 4)
    • #? (1 | 2)

    etc. See unit-tests.

  • FIXED: Fixed rewind in MS-split | like for '##'|'####'

  • FIXED: Fixed errors in second order quantifiers: ?? == .{0, 2} and ## == .{2}
    For example:

    • False positive matching [1####_of for TV_[11_of_24]
    • Crashed number = '????'; for number = '123';
    • and related.
  • CHANGED: API versionString() marked as obsolete due to RXWVersion.

v1.2

10 Feb 17:09
@3F 3F
089ec48
Compare
Choose a tag to compare
Public release. regXwild 1.2

* NEW: MultiByte support.
       Now you can use modules with MultiByte characters.

       For C++ projects it will be automatically selected
       according to the actual project configuration.

       For .NET, you need to override related `CharacterSet` property.

* NEW: .NET Core based projects support through Conari and related:
       Including .NET Standard targeting;

       Just install our modern NuGet packages;
       https://www.nuget.org/packages/regXwild

* CHANGED: Modules with MultiByte characters for .NET projects by default.
           You can replace this by the changing $(CharacterSet) msbuild property:
           ```
           <CharacterSet>Unicode</CharacterSet>
           ```

* CHANGED: Added the following tools to packages for related build processes.

           * tools\gnt.bat - https://github.com/3F/GetNuTool
           * tools\hMSBuild.bat - https://github.com/3F/hMSBuild

* CHANGED: `algo` and `snet` testers can be found inside packages
            for each $(Platform)-$(CharacterSet)

* CHANGED: Conari will no longer be distributed together with regXwild.
           https://github.com/3F/Conari

           Please consider to use it separately. Conari nuget packages:
           https://www.nuget.org/packages/Conari/

           (recommended due to caching of 0x29 opcodes and other related optimization)

* NOTE: Offcial releases can be also found through GitHub Releases:
        https://github.com/3F/regXwild/releases

v1.1

25 Sep 23:10
@3F 3F
Compare
Choose a tag to compare
public release v1.1

    CHANGED: Updated API:
            +REGXWILD_API bool searchEssC(const TCHAR* data, const TCHAR* filter, bool ignoreCase);
            +REGXWILD_API bool searchExtC(const TCHAR* data, const TCHAR* filter, bool ignoreCase);

    FIXED: Headers for C linkage and removed REGXWILD_EXPORTS from conf.
    NEW: Added Conari engine for work in .NET
         https://github.com/3F/Conari
         Use our NuGet package for Native C/C++ & .NET projects.

v1.0

22 Sep 10:07
@3F 3F
Compare
Choose a tag to compare
public release v1.0

    * First public release.
      regXwild - Fast and powerful wildcards ! in addition to slow regex engine and more...
      The initial non-public versions from 2013-2014 you can find in sandbox.