refactor!: 删除 RegexTools 中以 String[] 作为多个正则表达式入参的方法

字符串无法代表一个正则表达式,还需考虑正则表达式的 flag(s),所以当使用多个正则表达式时,更推荐使用 `Pattern[]`。
This commit is contained in:
zhouxy108 2025-04-30 22:57:47 +08:00
parent b70e526509
commit 3b519105bf
2 changed files with 0 additions and 136 deletions

View File

@ -61,31 +61,6 @@ public final class RegexTools {
return getPatternInternal(pattern); return getPatternInternal(pattern);
} }
/**
* 将各个正则表达式转为 {@link Pattern} 实例
*
* @param patterns 正则表达式
* @param cachePattern 是否缓存 {@link Pattern} 实例
* @return {@link Pattern} 实例数组
*/
public static Pattern[] getPatterns(final String[] patterns, final boolean cachePattern) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
return cachePattern
? cacheAndGetPatternsInternal(patterns)
: getPatternsInternal(patterns);
}
/**
* 将各个正则表达式转为 {@link Pattern} 实例不缓存
*
* @param patterns 正则表达式
* @return {@link Pattern} 实例数组
*/
public static Pattern[] getPatterns(final String[] patterns) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
return getPatternsInternal(patterns);
}
/** /**
* 判断 {@code input} 是否匹配 {@code pattern} * 判断 {@code input} 是否匹配 {@code pattern}
* *
@ -151,66 +126,6 @@ public final class RegexTools {
return matchesInternal(input, getPatternInternal(pattern)); return matchesInternal(input, getPatternInternal(pattern));
} }
/**
* 判断 {@code input} 是否匹配 {@code patterns} 中的一个
*
* @param input 输入
* @param patterns 正则表达式
* @param cachePattern 是否缓存 {@link Pattern} 实例
* @return 判断结果
*/
public static boolean matchesOne(@Nullable final CharSequence input, final String[] patterns,
final boolean cachePattern) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
final Pattern[] patternSet = cachePattern
? cacheAndGetPatternsInternal(patterns)
: getPatternsInternal(patterns);
return matchesOneInternal(input, patternSet);
}
/**
* 判断 {@code input} 是否匹配 {@code patterns} 中的一个不缓存 {@link Pattern} 实例
*
* @param input 输入
* @param patterns 正则表达式
* @return 判断结果
*/
public static boolean matchesOne(@Nullable final CharSequence input, final String[] patterns) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
final Pattern[] patternSet = getPatternsInternal(patterns);
return matchesOneInternal(input, patternSet);
}
/**
* 判断 {@code input} 是否匹配全部正则
*
* @param input 输入
* @param patterns 正则表达式
* @param cachePattern 是否缓存 {@link Pattern} 实例
* @return 判断结果
*/
public static boolean matchesAll(@Nullable final CharSequence input, final String[] patterns,
final boolean cachePattern) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
final Pattern[] patternSet = cachePattern
? cacheAndGetPatternsInternal(patterns)
: getPatternsInternal(patterns);
return matchesAllInternal(input, patternSet);
}
/**
* 判断 {@code input} 是否匹配全部正则不缓存 {@link Pattern} 实例
*
* @param input 输入
* @param patterns 正则表达式
* @return 判断结果
*/
public static boolean matchesAll(@Nullable final CharSequence input, final String[] patterns) {
AssertTools.checkArgument(ArrayTools.isAllElementsNotNull(patterns));
final Pattern[] patternSet = getPatternsInternal(patterns);
return matchesAllInternal(input, patternSet);
}
/** /**
* 生成 Matcher * 生成 Matcher
* *
@ -289,32 +204,6 @@ public final class RegexTools {
return result; return result;
} }
/**
* 将各个正则表达式转为 {@link Pattern} 实例
*
* @param patterns 正则表达式
* @return {@link Pattern} 实例数组
*/
@Nonnull
private static Pattern[] cacheAndGetPatternsInternal(final String[] patterns) {
return Arrays.stream(patterns)
.map(RegexTools::cacheAndGetPatternInternal)
.toArray(Pattern[]::new);
}
/**
* 将各个正则表达式转为 {@link Pattern} 实例
*
* @param patterns 正则表达式
* @return {@link Pattern} 实例数组
*/
@Nonnull
private static Pattern[] getPatternsInternal(final String[] patterns) {
return Arrays.stream(patterns)
.map(RegexTools::getPatternInternal)
.toArray(Pattern[]::new);
}
/** /**
* 判断 {@code input} 是否匹配 {@code pattern} * 判断 {@code input} 是否匹配 {@code pattern}
* *

View File

@ -55,31 +55,6 @@ class RegexToolsTests {
}); });
} }
@Test
void getPatterns_CachePatternTrue_ReturnsCachedPatterns() {
String[] patterns = {"abc", "def"};
Pattern[] cachedPatterns = RegexTools.getPatterns(patterns, true);
Pattern[] patternsFromCache = RegexTools.getPatterns(patterns, true);
assertSame(cachedPatterns[0], patternsFromCache[0]);
assertSame(cachedPatterns[1], patternsFromCache[1]);
}
@Test
void getPatterns_CachePatternFalse_ReturnsNewPatterns() {
String[] patterns = {"getPatterns_CachePatternFalse_ReturnsNewPatterns1", "getPatterns_CachePatternFalse_ReturnsNewPatterns2"};
Pattern[] patterns1 = RegexTools.getPatterns(patterns, false);
Pattern[] patterns2 = RegexTools.getPatterns(patterns, false);
assertNotSame(patterns1[0], patterns2[0]);
assertNotSame(patterns1[1], patterns2[1]);
}
@Test
void getPatterns_NullPatterns_ThrowsException() {
assertThrows(IllegalArgumentException.class, () -> {
RegexTools.getPatterns(null, true);
});
}
@Test @Test
void matches_InputMatchesPattern_ReturnsTrue() { void matches_InputMatchesPattern_ReturnsTrue() {
String pattern = "abc"; String pattern = "abc";