-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
changelog.txt
207 lines (149 loc) · 8.46 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
- - - - - - - - - - - - - - - - - - - - -
regXwild - https://github.com/3F/regXwild
- - - - - - - - - - - - - - - - - - - - -
[v1.4] 2021.03.07
* 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
[v1.3] 2020.08.10
* 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] 2020.02.10
* 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]
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]
* 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.