Ruby: include/ruby/re.h File Reference

Ruby 3.2.5p208 (2024-07-26 revision 31d0f1a2e7dbfb60731d1f05b868e1d578cda493)

Functions
re.h File Reference
`#include "ruby/internal/config.h"`
`#include <stdio.h>`
`#include "ruby/regex.h"`
`#include "ruby/internal/core/rmatch.h"`
`#include "ruby/internal/dllexport.h"`

Go to the source code of this file.

## Functions
VALUE | rb_reg_regcomp (VALUE str)
| Creates a new instance of rb_cRegexp.
long | rb_reg_search (VALUE re, VALUE str, long pos, int dir)
| Runs the passed regular expression over the passed string.
VALUE | rb_reg_regsub (VALUE repl, VALUE src, struct re_registers *regs, VALUE rexp)
| Substitution.
long | rb_reg_adjust_startpos (VALUE re, VALUE str, long pos, int dir)
| Tell us if this is a wrong idea, but it seems this function has no usage at all.
VALUE | rb_reg_quote (VALUE str)
| Escapes any characters that would have special meaning in a regular expression.
regex_t * | rb_reg_prepare_re (VALUE re, VALUE str)
| Exercises various checks and preprocesses so that the given regular expression can be applied to the given string.
int | rb_reg_region_copy (struct re_registers *dst, const struct re_registers *src)
| Duplicates a match data.

## Detailed Description

Author
  $Author$

Date
  Thu Sep 30 14:18:32 JST 1993

Copyright
  Copyright (C) 1993-2007 Yukihiro Matsumoto
  This file is a part of the programming language Ruby. Permission is hereby granted, to either redistribute and/or modify this file, provided that the conditions mentioned in the file COPYING are met. Consult the file for details.

Definition in file re.h.

## Function Documentation

## ◆ rb_reg_adjust_startpos()

long rb_reg_adjust_startpos | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos,
|  | int | dir )

Tell us if this is a wrong idea, but it seems this function has no usage at all.

Just remains here for theoretical backwards compatibility.

Parameters

  [in] | re | Regular expression to execute.
  [in] | str | Target string to search.
  [in] | pos | Offset in `str` to start searching, in bytes.
  [in] | dir | `pos`' direction; 0 means left-to-right, 1 for the opposite.

Returns
  Adjusted nearest offset to `pos` inside of `str`, where is a character boundary.

Definition at line 1650 of file re.c.

## ◆ rb_reg_prepare_re()

regex_t * rb_reg_prepare_re | ( | VALUE | re,
|  | VALUE | str )

Exercises various checks and preprocesses so that the given regular expression can be applied to the given string.

The preprocess here includes (but not limited to) for instance encoding conversion.

Parameters

  [in] | re | Target regular expression.
  [in] | str | What `re` is about to run on.

Exceptions

  rb_eArgError | `re` does not fit for `str`.
  rb_eEncCompatError | `re` and `str` are incompatible.
  rb_eRegexpError | `re` is malformed.

Returns
  A preprocessesed pattern buffer ready to be applied to `str`.

Note
  The return value is manages by our GC. Don't free.

Definition at line 1643 of file re.c.

## ◆ rb_reg_quote()

VALUE rb_reg_quote | ( | VALUE | str | ) |

Escapes any characters that would have special meaning in a regular expression.

Parameters

  [in] | str | Target string to escape.

Returns
  A copy of `str` whose contents are escaped.

Definition at line 3996 of file re.c.

Referenced by rb_reg_quote().

## ◆ rb_reg_regcomp()

VALUE rb_reg_regcomp | ( | VALUE | str | ) |

Creates a new instance of rb_cRegexp.

It can be seen as a specialised version of rb_reg_new_str() where it does not take options.

Parameters

  [in] | str | Source code in String.

Returns
  Allocated new instance of rb_cRegexp.

Definition at line 3380 of file re.c.

## ◆ rb_reg_region_copy()

int rb_reg_region_copy | ( | struct re_registers * | dst,
|  | const struct re_registers * | src )

Duplicates a match data.

This is roughly the same as `onig_region_copy()`, except it tries to GC when there is not enough memory.

Parameters

  [out] | dst | Target registers to fill.
  [in] | src | Source registers to duplicate.

Exceptions

  rb_eNoMemError | Not enough memory.

Return values

  0 | Successful
  ONIGERR_MEMORY | Not enough memory, even after GC (unlikely).

Postcondition
  `dst` has identical contents to `src`.

Definition at line 976 of file re.c.

Referenced by rb_reg_region_copy().

## ◆ rb_reg_regsub()

VALUE rb_reg_regsub | ( | VALUE | repl,
|  | VALUE | src,
|  | struct re_registers * | regs,
|  | VALUE | rexp )

Substitution.

This is basically the implementation of `String#sub`. Also `String#gsub` repeatedly calls this function.

Parameters

  [in] | repl | Replacement string, e.g. `"\\1\\2"`
  [in] | src | Source string, to be replaced.
  [in] | regs | Matched data generated by applying `rexp` to `src`.
  [in] | rexp | Regular expression.

Returns
  A substituted string.

Definition at line 4362 of file re.c.

Referenced by rb_reg_regsub().

## ◆ rb_reg_search()

long rb_reg_search | ( | VALUE | re,
|  | VALUE | str,
|  | long | pos,
|  | int | dir )

Runs the passed regular expression over the passed string.

Unlike rb_reg_search() this function also takes position and direction of the search, which make it possible for this function to run from in middle of the string.

Parameters

  [in] | re | Regular expression to execute.
  [in] | str | Target string to search.
  [in] | pos | Offset in `str` to start searching, in bytes.
  [in] | dir | `pos`' direction; 0 means left-to-right, 1 for the opposite.

Exceptions

  rb_eArgError | `re` is broken.
  rb_eRegexpError | `re` is malformed.

Return values

  -1 | Match failed.
  otherwise | Offset of first such byte where match happened.

Postcondition
  `Regexp.last_match` is updated.
  `$&`, `$~`, etc., are updated.

Definition at line 1765 of file re.c.

Referenced by rb_reg_match2().