diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
index 6ddb37c70..2b61b7a5e 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java
@@ -2415,6 +2415,43 @@ public class StrUtil {
return result.toArray(new String[0]);
}
+ /**
+ * 截取指定字符串多段中间部分,不包括标识字符串
+ *
+ * 栗子: + * + *
+ * StrUtil.subBetweenAll(null, *) = []
+ * StrUtil.subBetweenAll(*, null) = []
+ * StrUtil.subBetweenAll(*, *) = []
+ * StrUtil.subBetweenAll("", "") = []
+ * StrUtil.subBetweenAll("", "#") = []
+ * StrUtil.subBetweenAll("gotanks", "") = []
+ * StrUtil.subBetweenAll("#gotanks#", "#") = ["gotanks"]
+ * StrUtil.subBetweenAll("#hello# #world#!", "#") = ["hello", "world"]
+ * StrUtil.subBetweenAll("#hello# world#!", "#"); = ["hello"]
+ *
+ *
+ * @param str 被切割的字符串
+ * @param beforeAndAfter 截取开始和结束的字符串标识
+ * @return 截取后的字符串
+ * @author gotanks
+ * @since 5.4.7
+ */
+ public static String[] subBetweenAll(CharSequence str, CharSequence beforeAndAfter) {
+ String[] resultArr = new String[0];
+ if (hasEmpty(str, beforeAndAfter) || !contains(str, beforeAndAfter)) {
+ return resultArr;
+ }
+
+ final List