/**
* call-seq:
* rxp.sub(str, replacement)
* rxp.sub(str) {|match_data| ... }
*
* Returns a copy of _str_ with the _first_ occurrence of _rxp_ pattern
* replaced with either _replacement_ or the value of the block.
*
* If a string is used as the replacement, the sequences \1, \2,
* and so on may be used to interpolate successive groups in the match.
*
* In the block form, the current MatchData object is passed in as a
* parameter. The value returned by the block will be substituted for
* the match on each call.
*
**/
static VALUE oregexp_m_sub(int argc, VALUE *argv, VALUE self) {