code: public Matcher region(int start, int end) {
          if ((start < 0) || (start < 0))
              throw new IndexOutOfBoundsException("start");
          if ((end < 0) || (end > matcher.dataEnd()))
              throw new IndexOutOfBoundsException("end");
          if (start > end)
              throw new IndexOutOfBoundsException("start > end");
          matcher.setTarget(matcher.targetChars(), start, end - start);
          return this;
      }
docs: Sets the limits of this matcher's region. The region is the part of the
  input sequence that will be searched to find a match. Invoking this
  method resets the matcher, and then sets the region to start at the
  index specified by the <code>start</code> parameter and end at the
  index specified by the <code>end</code> parameter.
  
  @param  start
  The index to start searching at (inclusive)
  @param  end
  The index to end searching at (exclusive)
  @throws  IndexOutOfBoundsException
  If start or end is less than zero, if
  start is greater than the length of the input sequence, if
  end is greater than the length of the input sequence, or if
  start is greater than end.
  @return  this matcher
  @since 1.5