between method

String between(
  1. Pattern start,
  2. Pattern end
)

Text between start and end (first matches). Returns empty if not found.

Implementation

String between(Pattern start, Pattern end) {
  final a =
      (start is String)
          ? indexOf(start)
          : (start as RegExp).firstMatch(this)?.start ?? -1;
  if (a == -1) return '';
  final startEnd =
      (start is String)
          ? a + start.length
          : ((start as RegExp).firstMatch(this)!.end);
  final b =
      (end is String)
          ? indexOf(end, startEnd)
          : (end as RegExp).firstMatch(substring(startEnd))?.start;
  if (b == null || b == -1) return '';
  final endIdx = (end is String) ? b : startEnd + b;
  return substring(startEnd, endIdx);
}