1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertNull;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.util.regex.Pattern;
25 import java.util.regex.PatternSyntaxException;
26
27 import org.junit.jupiter.api.Test;
28
29
30
31
32 class RegExUtilsTest extends AbstractLangTest {
33
34 @Test
35 void testDotAll() {
36 assertTrue(RegExUtils.dotAll("<A>.*</A>").matcher("<A>\nxy\n</A>").matches());
37 }
38
39 @Test
40 void testDotAllMatcher() {
41 assertTrue(RegExUtils.dotAllMatcher("<A>.*</A>", (CharSequence) "<A>\nxy\n</A>").matches());
42 }
43
44 @SuppressWarnings("deprecation")
45 @Test
46 void testDotAllMatcherDeprecated() {
47 assertTrue(RegExUtils.dotAllMatcher("<A>.*</A>", "<A>\nxy\n</A>").matches());
48 }
49
50 @Test
51 void testRemoveAll() {
52 assertNull(RegExUtils.removeAll((CharSequence) null, Pattern.compile("")));
53 assertEquals("any", RegExUtils.removeAll((CharSequence) "any", (Pattern) null));
54
55 assertEquals("any", RegExUtils.removeAll((CharSequence) "any", Pattern.compile("")));
56 assertEquals("", RegExUtils.removeAll((CharSequence) "any", Pattern.compile(".*")));
57 assertEquals("", RegExUtils.removeAll((CharSequence) "any", Pattern.compile(".+")));
58 assertEquals("", RegExUtils.removeAll((CharSequence) "any", Pattern.compile(".?")));
59
60 assertEquals("A\nB", RegExUtils.removeAll((CharSequence) "A<__>\n<__>B", Pattern.compile("<.*>")));
61 assertEquals("AB", RegExUtils.removeAll((CharSequence) "A<__>\n<__>B", Pattern.compile("(?s)<.*>")));
62 assertEquals("ABC123", RegExUtils.removeAll((CharSequence) "ABCabc123abc", Pattern.compile("[a-z]")));
63
64 assertEquals("AB", RegExUtils.removeAll((CharSequence) "A<__>\n<__>B", Pattern.compile("<.*>", Pattern.DOTALL)));
65 assertEquals("AB", RegExUtils.removeAll((CharSequence) "A<__>\\n<__>B", Pattern.compile("<.*>")));
66 assertEquals("", RegExUtils.removeAll((CharSequence) "<A>x\\ny</A>", Pattern.compile("<A>.*</A>")));
67 assertEquals("", RegExUtils.removeAll((CharSequence) "<A>\nxy\n</A>", Pattern.compile("<A>.*</A>", Pattern.DOTALL)));
68 }
69
70 @Test
71 void testRemoveAll_StringString() {
72 assertNull(RegExUtils.removeAll(null, ""));
73 assertEquals("any", RegExUtils.removeAll("any", (String) null));
74 assertEquals("any", RegExUtils.removeAll("any", ""));
75 assertEquals("", RegExUtils.removeAll("any", ".*"));
76 assertEquals("", RegExUtils.removeAll("any", ".+"));
77 assertEquals("", RegExUtils.removeAll("any", ".?"));
78 assertEquals("A\nB", RegExUtils.removeAll("A<__>\n<__>B", "<.*>"));
79 assertEquals("AB", RegExUtils.removeAll("A<__>\n<__>B", "(?s)<.*>"));
80 assertEquals("ABC123", RegExUtils.removeAll("ABCabc123abc", "[a-z]"));
81 assertThrows(PatternSyntaxException.class, () -> RegExUtils.removeAll("any", "{badRegexSyntax}"),
82 "RegExUtils.removeAll expecting PatternSyntaxException");
83 }
84
85 @Test
86 void testRemoveAllDeprecated() {
87 assertNull(RegExUtils.removeAll(null, Pattern.compile("")));
88 assertEquals("any", RegExUtils.removeAll("any", (Pattern) null));
89
90 assertEquals("any", RegExUtils.removeAll("any", Pattern.compile("")));
91 assertEquals("", RegExUtils.removeAll("any", Pattern.compile(".*")));
92 assertEquals("", RegExUtils.removeAll("any", Pattern.compile(".+")));
93 assertEquals("", RegExUtils.removeAll("any", Pattern.compile(".?")));
94
95 assertEquals("A\nB", RegExUtils.removeAll("A<__>\n<__>B", Pattern.compile("<.*>")));
96 assertEquals("AB", RegExUtils.removeAll("A<__>\n<__>B", Pattern.compile("(?s)<.*>")));
97 assertEquals("ABC123", RegExUtils.removeAll("ABCabc123abc", Pattern.compile("[a-z]")));
98
99 assertEquals("AB", RegExUtils.removeAll("A<__>\n<__>B", Pattern.compile("<.*>", Pattern.DOTALL)));
100 assertEquals("AB", RegExUtils.removeAll("A<__>\\n<__>B", Pattern.compile("<.*>")));
101 assertEquals("", RegExUtils.removeAll("<A>x\\ny</A>", Pattern.compile("<A>.*</A>")));
102 assertEquals("", RegExUtils.removeAll("<A>\nxy\n</A>", Pattern.compile("<A>.*</A>", Pattern.DOTALL)));
103 }
104
105 @Test
106 void testRemoveFirst() {
107 assertNull(RegExUtils.removeFirst((CharSequence) null, Pattern.compile("")));
108 assertEquals("any", RegExUtils.removeFirst((CharSequence) "any", (Pattern) null));
109
110 assertEquals("any", RegExUtils.removeFirst((CharSequence) "any", Pattern.compile("")));
111 assertEquals("", RegExUtils.removeFirst((CharSequence) "any", Pattern.compile(".*")));
112 assertEquals("", RegExUtils.removeFirst((CharSequence) "any", Pattern.compile(".+")));
113 assertEquals("bc", RegExUtils.removeFirst((CharSequence) "abc", Pattern.compile(".?")));
114
115 assertEquals("A\n<__>B", RegExUtils.removeFirst((CharSequence) "A<__>\n<__>B", Pattern.compile("<.*>")));
116 assertEquals("AB", RegExUtils.removeFirst((CharSequence) "A<__>\n<__>B", Pattern.compile("(?s)<.*>")));
117 assertEquals("ABCbc123", RegExUtils.removeFirst((CharSequence) "ABCabc123", Pattern.compile("[a-z]")));
118 assertEquals("ABC123abc", RegExUtils.removeFirst((CharSequence) "ABCabc123abc", Pattern.compile("[a-z]+")));
119 }
120
121 @Test
122 void testRemoveFirst_StringString() {
123 assertNull(RegExUtils.removeFirst(null, ""));
124 assertEquals("any", RegExUtils.removeFirst("any", (String) null));
125 assertEquals("any", RegExUtils.removeFirst("any", ""));
126 assertEquals("", RegExUtils.removeFirst("any", ".*"));
127 assertEquals("", RegExUtils.removeFirst("any", ".+"));
128 assertEquals("bc", RegExUtils.removeFirst("abc", ".?"));
129 assertEquals("A\n<__>B", RegExUtils.removeFirst("A<__>\n<__>B", "<.*>"));
130 assertEquals("AB", RegExUtils.removeFirst("A<__>\n<__>B", "(?s)<.*>"));
131 assertEquals("ABCbc123", RegExUtils.removeFirst("ABCabc123", "[a-z]"));
132 assertEquals("ABC123abc", RegExUtils.removeFirst("ABCabc123abc", "[a-z]+"));
133 assertThrows(PatternSyntaxException.class, () -> RegExUtils.removeFirst("any", "{badRegexSyntax}"),
134 "RegExUtils.removeFirst expecting PatternSyntaxException");
135 }
136
137 @Test
138 void testRemoveFirstDeprecated() {
139 assertNull(RegExUtils.removeFirst(null, Pattern.compile("")));
140 assertEquals("any", RegExUtils.removeFirst("any", (Pattern) null));
141
142 assertEquals("any", RegExUtils.removeFirst("any", Pattern.compile("")));
143 assertEquals("", RegExUtils.removeFirst("any", Pattern.compile(".*")));
144 assertEquals("", RegExUtils.removeFirst("any", Pattern.compile(".+")));
145 assertEquals("bc", RegExUtils.removeFirst("abc", Pattern.compile(".?")));
146
147 assertEquals("A\n<__>B", RegExUtils.removeFirst("A<__>\n<__>B", Pattern.compile("<.*>")));
148 assertEquals("AB", RegExUtils.removeFirst("A<__>\n<__>B", Pattern.compile("(?s)<.*>")));
149 assertEquals("ABCbc123", RegExUtils.removeFirst("ABCabc123", Pattern.compile("[a-z]")));
150 assertEquals("ABC123abc", RegExUtils.removeFirst("ABCabc123abc", Pattern.compile("[a-z]+")));
151 }
152
153 @Test
154 void testRemovePattern() {
155 assertNull(RegExUtils.removePattern((CharSequence) null, ""));
156 assertEquals("any", RegExUtils.removePattern((CharSequence) "any", (String) null));
157
158 assertEquals("", RegExUtils.removePattern((CharSequence) "", ""));
159 assertEquals("", RegExUtils.removePattern((CharSequence) "", ".*"));
160 assertEquals("", RegExUtils.removePattern((CharSequence) "", ".+"));
161
162 assertEquals("AB", RegExUtils.removePattern((CharSequence) "A<__>\n<__>B", "<.*>"));
163 assertEquals("AB", RegExUtils.removePattern((CharSequence) "A<__>\\n<__>B", "<.*>"));
164 assertEquals("", RegExUtils.removePattern((CharSequence) "<A>x\\ny</A>", "<A>.*</A>"));
165 assertEquals("", RegExUtils.removePattern((CharSequence) "<A>\nxy\n</A>", "<A>.*</A>"));
166
167 assertEquals("ABC123", RegExUtils.removePattern((CharSequence) "ABCabc123", "[a-z]"));
168 }
169
170 @Test
171 void testRemovePatternDeprecated() {
172 assertNull(RegExUtils.removePattern(null, ""));
173 assertEquals("any", RegExUtils.removePattern("any", (String) null));
174
175 assertEquals("", RegExUtils.removePattern("", ""));
176 assertEquals("", RegExUtils.removePattern("", ".*"));
177 assertEquals("", RegExUtils.removePattern("", ".+"));
178
179 assertEquals("AB", RegExUtils.removePattern("A<__>\n<__>B", "<.*>"));
180 assertEquals("AB", RegExUtils.removePattern("A<__>\\n<__>B", "<.*>"));
181 assertEquals("", RegExUtils.removePattern("<A>x\\ny</A>", "<A>.*</A>"));
182 assertEquals("", RegExUtils.removePattern("<A>\nxy\n</A>", "<A>.*</A>"));
183
184 assertEquals("ABC123", RegExUtils.removePattern("ABCabc123", "[a-z]"));
185 }
186
187 @Test
188 void testReplaceAll() {
189 assertNull(RegExUtils.replaceAll((CharSequence) null, Pattern.compile(""), ""));
190
191 assertEquals("any", RegExUtils.replaceAll((CharSequence) "any", (Pattern) null, ""));
192 assertEquals("any", RegExUtils.replaceAll((CharSequence) "any", Pattern.compile(""), null));
193
194 assertEquals("zzz", RegExUtils.replaceAll((CharSequence) "", Pattern.compile(""), "zzz"));
195 assertEquals("zzz", RegExUtils.replaceAll((CharSequence) "", Pattern.compile(".*"), "zzz"));
196 assertEquals("", RegExUtils.replaceAll((CharSequence) "", Pattern.compile(".+"), "zzz"));
197 assertEquals("ZZaZZbZZcZZ", RegExUtils.replaceAll((CharSequence) "abc", Pattern.compile(""), "ZZ"));
198
199 assertEquals("z\nz", RegExUtils.replaceAll((CharSequence) "<__>\n<__>", Pattern.compile("<.*>"), "z"));
200 assertEquals("z", RegExUtils.replaceAll((CharSequence) "<__>\n<__>", Pattern.compile("(?s)<.*>"), "z"));
201
202 assertEquals("z", RegExUtils.replaceAll((CharSequence) "<__>\n<__>", Pattern.compile("<.*>", Pattern.DOTALL), "z"));
203 assertEquals("z", RegExUtils.replaceAll((CharSequence) "<__>\\n<__>", Pattern.compile("<.*>"), "z"));
204 assertEquals("X", RegExUtils.replaceAll((CharSequence) "<A>\nxy\n</A>", Pattern.compile("<A>.*</A>", Pattern.DOTALL), "X"));
205
206 assertEquals("ABC___123", RegExUtils.replaceAll((CharSequence) "ABCabc123", Pattern.compile("[a-z]"), "_"));
207 assertEquals("ABC_123", RegExUtils.replaceAll((CharSequence) "ABCabc123", Pattern.compile("[^A-Z0-9]+"), "_"));
208 assertEquals("ABC123", RegExUtils.replaceAll((CharSequence) "ABCabc123", Pattern.compile("[^A-Z0-9]+"), ""));
209 assertEquals("Lorem_ipsum_dolor_sit", RegExUtils.replaceAll((CharSequence) "Lorem ipsum dolor sit", Pattern.compile("( +)([a-z]+)"), "_$2"));
210 }
211
212 @Test
213 void testReplaceAll_StringStringString() {
214 assertNull(RegExUtils.replaceAll(null, "", ""));
215
216 assertEquals("any", RegExUtils.replaceAll("any", (String) null, ""));
217 assertEquals("any", RegExUtils.replaceAll("any", "", null));
218
219 assertEquals("zzz", RegExUtils.replaceAll("", "", "zzz"));
220 assertEquals("zzz", RegExUtils.replaceAll("", ".*", "zzz"));
221 assertEquals("", RegExUtils.replaceAll("", ".+", "zzz"));
222 assertEquals("ZZaZZbZZcZZ", RegExUtils.replaceAll("abc", "", "ZZ"));
223
224 assertEquals("z\nz", RegExUtils.replaceAll("<__>\n<__>", "<.*>", "z"));
225 assertEquals("z", RegExUtils.replaceAll("<__>\n<__>", "(?s)<.*>", "z"));
226
227 assertEquals("ABC___123", RegExUtils.replaceAll("ABCabc123", "[a-z]", "_"));
228 assertEquals("ABC_123", RegExUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "_"));
229 assertEquals("ABC123", RegExUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", ""));
230 assertEquals("Lorem_ipsum_dolor_sit", RegExUtils.replaceAll("Lorem ipsum dolor sit", "( +)([a-z]+)", "_$2"));
231
232 assertThrows(PatternSyntaxException.class, () -> RegExUtils.replaceAll("any", "{badRegexSyntax}", ""),
233 "RegExUtils.replaceAll expecting PatternSyntaxException");
234 }
235
236 @Test
237 void testReplaceAllDeprecated() {
238 assertNull(RegExUtils.replaceAll(null, Pattern.compile(""), ""));
239
240 assertEquals("any", RegExUtils.replaceAll("any", (Pattern) null, ""));
241 assertEquals("any", RegExUtils.replaceAll("any", Pattern.compile(""), null));
242
243 assertEquals("zzz", RegExUtils.replaceAll("", Pattern.compile(""), "zzz"));
244 assertEquals("zzz", RegExUtils.replaceAll("", Pattern.compile(".*"), "zzz"));
245 assertEquals("", RegExUtils.replaceAll("", Pattern.compile(".+"), "zzz"));
246 assertEquals("ZZaZZbZZcZZ", RegExUtils.replaceAll("abc", Pattern.compile(""), "ZZ"));
247
248 assertEquals("z\nz", RegExUtils.replaceAll("<__>\n<__>", Pattern.compile("<.*>"), "z"));
249 assertEquals("z", RegExUtils.replaceAll("<__>\n<__>", Pattern.compile("(?s)<.*>"), "z"));
250
251 assertEquals("z", RegExUtils.replaceAll("<__>\n<__>", Pattern.compile("<.*>", Pattern.DOTALL), "z"));
252 assertEquals("z", RegExUtils.replaceAll("<__>\\n<__>", Pattern.compile("<.*>"), "z"));
253 assertEquals("X", RegExUtils.replaceAll("<A>\nxy\n</A>", Pattern.compile("<A>.*</A>", Pattern.DOTALL), "X"));
254
255 assertEquals("ABC___123", RegExUtils.replaceAll("ABCabc123", Pattern.compile("[a-z]"), "_"));
256 assertEquals("ABC_123", RegExUtils.replaceAll("ABCabc123", Pattern.compile("[^A-Z0-9]+"), "_"));
257 assertEquals("ABC123", RegExUtils.replaceAll("ABCabc123", Pattern.compile("[^A-Z0-9]+"), ""));
258 assertEquals("Lorem_ipsum_dolor_sit", RegExUtils.replaceAll("Lorem ipsum dolor sit", Pattern.compile("( +)([a-z]+)"), "_$2"));
259 }
260
261 @Test
262 void testReplaceFirst() {
263 assertNull(RegExUtils.replaceFirst((CharSequence) null, Pattern.compile(""), ""));
264
265 assertEquals("any", RegExUtils.replaceFirst((CharSequence) "any", (Pattern) null, ""));
266 assertEquals("any", RegExUtils.replaceFirst((CharSequence) "any", Pattern.compile(""), null));
267
268 assertEquals("zzz", RegExUtils.replaceFirst((CharSequence) "", Pattern.compile(""), "zzz"));
269 assertEquals("zzz", RegExUtils.replaceFirst((CharSequence) "", Pattern.compile(".*"), "zzz"));
270 assertEquals("", RegExUtils.replaceFirst((CharSequence) "", Pattern.compile(".+"), "zzz"));
271 assertEquals("ZZabc", RegExUtils.replaceFirst((CharSequence) "abc", Pattern.compile(""), "ZZ"));
272
273 assertEquals("z\n<__>", RegExUtils.replaceFirst((CharSequence) "<__>\n<__>", Pattern.compile("<.*>"), "z"));
274 assertEquals("z", RegExUtils.replaceFirst((CharSequence) "<__>\n<__>", Pattern.compile("(?s)<.*>"), "z"));
275
276 assertEquals("ABC_bc123", RegExUtils.replaceFirst((CharSequence) "ABCabc123", Pattern.compile("[a-z]"), "_"));
277 assertEquals("ABC_123abc", RegExUtils.replaceFirst((CharSequence) "ABCabc123abc", Pattern.compile("[^A-Z0-9]+"), "_"));
278 assertEquals("ABC123abc", RegExUtils.replaceFirst((CharSequence) "ABCabc123abc", Pattern.compile("[^A-Z0-9]+"), ""));
279 assertEquals("Lorem_ipsum dolor sit", RegExUtils.replaceFirst((CharSequence) "Lorem ipsum dolor sit", Pattern.compile("( +)([a-z]+)"), "_$2"));
280 }
281
282 @Test
283 void testReplaceFirst_StringStringString() {
284 assertNull(RegExUtils.replaceFirst(null, "", ""));
285
286 assertEquals("any", RegExUtils.replaceFirst("any", (String) null, ""));
287 assertEquals("any", RegExUtils.replaceFirst("any", "", null));
288
289 assertEquals("zzz", RegExUtils.replaceFirst("", "", "zzz"));
290 assertEquals("zzz", RegExUtils.replaceFirst("", ".*", "zzz"));
291 assertEquals("", RegExUtils.replaceFirst("", ".+", "zzz"));
292 assertEquals("ZZabc", RegExUtils.replaceFirst("abc", "", "ZZ"));
293
294 assertEquals("z\n<__>", RegExUtils.replaceFirst("<__>\n<__>", "<.*>", "z"));
295 assertEquals("z", RegExUtils.replaceFirst("<__>\n<__>", "(?s)<.*>", "z"));
296
297 assertEquals("ABC_bc123", RegExUtils.replaceFirst("ABCabc123", "[a-z]", "_"));
298 assertEquals("ABC_123abc", RegExUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", "_"));
299 assertEquals("ABC123abc", RegExUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", ""));
300 assertEquals("Lorem_ipsum dolor sit",
301 RegExUtils.replaceFirst("Lorem ipsum dolor sit", "( +)([a-z]+)", "_$2"));
302
303 assertThrows(PatternSyntaxException.class, () -> RegExUtils.replaceFirst("any", "{badRegexSyntax}", ""),
304 "RegExUtils.replaceFirst expecting PatternSyntaxException");
305 }
306
307 @Test
308 void testReplaceFirstDeprecated() {
309 assertNull(RegExUtils.replaceFirst(null, Pattern.compile(""), ""));
310
311 assertEquals("any", RegExUtils.replaceFirst("any", (Pattern) null, ""));
312 assertEquals("any", RegExUtils.replaceFirst("any", Pattern.compile(""), null));
313
314 assertEquals("zzz", RegExUtils.replaceFirst("", Pattern.compile(""), "zzz"));
315 assertEquals("zzz", RegExUtils.replaceFirst("", Pattern.compile(".*"), "zzz"));
316 assertEquals("", RegExUtils.replaceFirst("", Pattern.compile(".+"), "zzz"));
317 assertEquals("ZZabc", RegExUtils.replaceFirst("abc", Pattern.compile(""), "ZZ"));
318
319 assertEquals("z\n<__>", RegExUtils.replaceFirst("<__>\n<__>", Pattern.compile("<.*>"), "z"));
320 assertEquals("z", RegExUtils.replaceFirst("<__>\n<__>", Pattern.compile("(?s)<.*>"), "z"));
321
322 assertEquals("ABC_bc123", RegExUtils.replaceFirst("ABCabc123", Pattern.compile("[a-z]"), "_"));
323 assertEquals("ABC_123abc", RegExUtils.replaceFirst("ABCabc123abc", Pattern.compile("[^A-Z0-9]+"), "_"));
324 assertEquals("ABC123abc", RegExUtils.replaceFirst("ABCabc123abc", Pattern.compile("[^A-Z0-9]+"), ""));
325 assertEquals("Lorem_ipsum dolor sit", RegExUtils.replaceFirst("Lorem ipsum dolor sit", Pattern.compile("( +)([a-z]+)"), "_$2"));
326 }
327
328 @Test
329 void testReplacePattern() {
330 assertNull(RegExUtils.replacePattern((CharSequence) null, "", ""));
331 assertEquals("any", RegExUtils.replacePattern((CharSequence) "any", (String) null, ""));
332 assertEquals("any", RegExUtils.replacePattern((CharSequence) "any", "", null));
333
334 assertEquals("zzz", RegExUtils.replacePattern((CharSequence) "", "", "zzz"));
335 assertEquals("zzz", RegExUtils.replacePattern((CharSequence) "", ".*", "zzz"));
336 assertEquals("", RegExUtils.replacePattern((CharSequence) "", ".+", "zzz"));
337
338 assertEquals("z", RegExUtils.replacePattern((CharSequence) "<__>\n<__>", "<.*>", "z"));
339 assertEquals("z", RegExUtils.replacePattern((CharSequence) "<__>\\n<__>", "<.*>", "z"));
340 assertEquals("X", RegExUtils.replacePattern((CharSequence) "<A>\nxy\n</A>", "<A>.*</A>", "X"));
341
342 assertEquals("ABC___123", RegExUtils.replacePattern((CharSequence) "ABCabc123", "[a-z]", "_"));
343 assertEquals("ABC_123", RegExUtils.replacePattern((CharSequence) "ABCabc123", "[^A-Z0-9]+", "_"));
344 assertEquals("ABC123", RegExUtils.replacePattern((CharSequence) "ABCabc123", "[^A-Z0-9]+", ""));
345 assertEquals("Lorem_ipsum_dolor_sit", RegExUtils.replacePattern((CharSequence) "Lorem ipsum dolor sit", "( +)([a-z]+)", "_$2"));
346 }
347
348 @Test
349 void testReplacePatternDeprecated() {
350 assertNull(RegExUtils.replacePattern(null, "", ""));
351 assertEquals("any", RegExUtils.replacePattern("any", (String) null, ""));
352 assertEquals("any", RegExUtils.replacePattern("any", "", null));
353
354 assertEquals("zzz", RegExUtils.replacePattern("", "", "zzz"));
355 assertEquals("zzz", RegExUtils.replacePattern("", ".*", "zzz"));
356 assertEquals("", RegExUtils.replacePattern("", ".+", "zzz"));
357
358 assertEquals("z", RegExUtils.replacePattern("<__>\n<__>", "<.*>", "z"));
359 assertEquals("z", RegExUtils.replacePattern("<__>\\n<__>", "<.*>", "z"));
360 assertEquals("X", RegExUtils.replacePattern("<A>\nxy\n</A>", "<A>.*</A>", "X"));
361
362 assertEquals("ABC___123", RegExUtils.replacePattern("ABCabc123", "[a-z]", "_"));
363 assertEquals("ABC_123", RegExUtils.replacePattern("ABCabc123", "[^A-Z0-9]+", "_"));
364 assertEquals("ABC123", RegExUtils.replacePattern("ABCabc123", "[^A-Z0-9]+", ""));
365 assertEquals("Lorem_ipsum_dolor_sit", RegExUtils.replacePattern("Lorem ipsum dolor sit", "( +)([a-z]+)", "_$2"));
366 }
367
368 }