code: @GwtIncompatible("java.util.regex")
    public static Splitter on(final Pattern separatorPattern) {
      checkNotNull(separatorPattern);
      checkArgument(!separatorPattern.matcher("").matches(),
          "The pattern may not match the empty string: %s", separatorPattern);
  
      return new Splitter(new Strategy() {
        @Override public SplittingIterator iterator(
            final Splitter splitter, CharSequence toSplit) {
          final Matcher matcher = separatorPattern.matcher(toSplit);
          return new SplittingIterator(splitter, toSplit) {
            @Override public int separatorStart(int start) {
              return matcher.find(start) ? matcher.start() : -1;
            }
  
            @Override public int separatorEnd(int separatorPosition) {
              return matcher.end();
            }
          };
        }
      });
    }
docs: Returns a splitter that considers any subsequence matching {@code
  pattern} to be a separator. For example, {@code
  Splitter.on(Pattern.compile("\r?\n")).split(entireFile)} splits a string
  into lines whether it uses DOS-style or UNIX-style line terminators.
  
  @param separatorPattern the pattern that determines whether a subsequence
  is a separator. This pattern may not match the empty string.
  @return a splitter, with default settings, that uses this pattern
  @throws IllegalArgumentException if {@code separatorPattern} matches the
  empty string