From WikiChip
Difference between revisions of "mirc/identifiers/$regerrstr"
< mirc‎ | identifiers

(Created page with "{{mirc title|$regerrstr Identifier}}'''$regerrstr''' returns the PCRE error string for the last regex call made, if any == Synopsis == <pre>$regerrstr</pre> == Parameters...")
 
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{mirc title|$regerrstr Identifier}}'''$regerrstr''' returns the PCRE error string for the last regex call made, if any  
+
{{mirc title|$regerrstr Identifier}}'''$regerrstr''' returns the PCRE error string of the compile function for the last regex call made, if any.
  
 +
A regular expression must be compiled first, and then it's executed against a string.
 +
 +
If an error occurs in the compile function, $regerrstr is filled with an error string, corresponding to a positive number (listed below), but only the string is returned.
 +
 +
$regex and similar regex functions reporting number of matches ($regsubex with output variable or $regsub) will report a value of -14.
 +
 +
This value actually comes from the exec function, this is for convenience. $regex etc always return a negative value when an error occurs.
 +
 +
-14 is supposed to mean an internal pcre error, but this is only the case if $regerrstr is not set, then. You can find more info about on the regex page
  
 
== Synopsis ==
 
== Synopsis ==
Line 13: Line 22:
 
== List of error ==
 
== List of error ==
  
0  no error
+
* 1: \ at end of pattern
          1  \ at end of pattern
+
* 2: \c at end of pattern
          2  \c at end of pattern
+
* 3: unrecognized character follows \
          3  unrecognized character follows \
+
* 4: numbers out of order in {} quantifier
          4  numbers out of order in {} quantifier
+
* 5: number too big in {} quantifier
          5  number too big in {} quantifier
+
* 6: missing terminating ] for character class
          6  missing terminating ] for character class
+
* 7: invalid escape sequence in character class
          7  invalid escape sequence in character class
+
* 8: range out of order in character class
          8  range out of order in character class
+
* 9: nothing to repeat
          9  nothing to repeat
+
* 10: [this code is not in use]
        10  [this code is not in use]
+
* 11: internal error: unexpected repeat
        11  internal error: unexpected repeat
+
* 12: unrecognized character after (? or (?-
        12  unrecognized character after (? or (?-
+
* 13: POSIX named classes are supported only within a class
        13  POSIX named classes are supported only within a class
+
* 14: missing )
        14  missing )
+
* 15: reference to non-existent subpattern
        15  reference to non-existent subpattern
+
* 16: erroffset passed as NULL
        16  erroffset passed as NULL
+
* 17: unknown option bit(s) set
        17  unknown option bit(s) set
+
* 18: missing ) after comment
        18  missing ) after comment
+
* 19: [this code is not in use]
        19  [this code is not in use]
+
* 20: regular expression is too large
        20  regular expression is too large
+
* 21: failed to get memory
        21  failed to get memory
+
* 22: unmatched parentheses
        22  unmatched parentheses
+
* 23: internal error: code overflow
        23  internal error: code overflow
+
* 24: unrecognized character after (?<
        24  unrecognized character after (?<
+
* 25: lookbehind assertion is not fixed length
        25  lookbehind assertion is not fixed length
+
* 26: malformed number or name after (?(
        26  malformed number or name after (?(
+
* 27: conditional group contains more than two branches
        27  conditional group contains more than two branches
+
* 28: assertion expected after (?(
        28  assertion expected after (?(
+
* 29: (?R or (?[+-]digits must be followed by )
        29  (?R or (?[+-]digits must be followed by )
+
* 30: unknown POSIX class name
        30  unknown POSIX class name
+
* 31: POSIX collating elements are not supported
        31  POSIX collating elements are not supported
+
* 32: this version of PCRE is compiled without UTF support
        32  this version of PCRE is compiled without UTF support
+
* 33: [this code is not in use]
        33  [this code is not in use]
+
* 34: character value in \x{} or \o{} is too large
        34  character value in \x{} or \o{} is too large
+
* 35: invalid condition (?(0)
        35  invalid condition (?(0)
+
* 36: \C not allowed in lookbehind assertion
        36  \C not allowed in lookbehind assertion
+
* 37: PCRE does not support \L, \l, \N{name}, \U, or \u
        37  PCRE does not support \L, \l, \N{name}, \U, or \u
+
* 38: number after (?C is > 255
        38  number after (?C is > 255
+
* 39: closing ) for (?C expected
        39  closing ) for (?C expected
+
* 40: recursive call could loop indefinitely
        40  recursive call could loop indefinitely
+
* 41: unrecognized character after (?P
        41  unrecognized character after (?P
+
* 42: syntax error in subpattern name (missing terminator)
        42  syntax error in subpattern name (missing terminator)
+
* 43: two named subpatterns have the same name
        43  two named subpatterns have the same name
+
* 44: invalid UTF-8 string (specifically UTF-8)
        44  invalid UTF-8 string (specifically UTF-8)
+
* 45: support for \P, \p, and \X has not been compiled
        45  support for \P, \p, and \X has not been compiled
+
* 46: malformed \P or \p sequence
        46  malformed \P or \p sequence
+
* 47: unknown property name after \P or \p
        47  unknown property name after \P or \p
+
* 48: subpattern name is too long (maximum 32 characters)
        48  subpattern name is too long (maximum 32 characters)
+
* 49: too many named subpatterns (maximum 10000)
        49  too many named subpatterns (maximum 10000)
+
* 50: [this code is not in use]
        50  [this code is not in use]
+
* 51: octal value is greater than \377 in 8-bit non-UTF-8 mode
        51  octal value is greater than \377 in 8-bit non-UTF-8 mode
+
* 52: internal error: overran compiling workspace
        52  internal error: overran compiling workspace
+
* 53: internal error: previously-checked referenced subpattern not found
        53  internal error: previously-checked referenced subpattern
+
* 54: DEFINE group contains more than one branch
              not found
+
* 55: repeating a DEFINE group is not allowed
        54  DEFINE group contains more than one branch
+
* 56: inconsistent NEWLINE options
        55  repeating a DEFINE group is not allowed
+
* 57: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number
        56  inconsistent NEWLINE options
+
* 58: a numbered reference must not be zero
        57  \g is not followed by a braced, angle-bracketed, or quoted
+
* 59: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)
              name/number or by a plain number
+
* 60: (*VERB) not recognized or malformed
        58  a numbered reference must not be zero
+
* 61: number is too big
        59  an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)
+
* 62: subpattern name expected
        60  (*VERB) not recognized or malformed
+
* 63: digit expected after (?+
        61  number is too big
+
* 64: ] is an invalid data character in JavaScript compatibility mode
        62  subpattern name expected
+
* 65: different names for subpatterns of the same number are not allowed
        63  digit expected after (?+
+
* 66: (*MARK) must have an argument
        64  ] is an invalid data character in JavaScript compatibility mode
+
* 67: this version of PCRE is not compiled with Unicode property support
        65  different names for subpatterns of the same number are
+
* 68: \c must be followed by an ASCII character
              not allowed
+
* 69: \k is not followed by a braced, angle-bracketed, or quoted name
        66 (*MARK) must have an argument
+
* 70: internal error: unknown opcode in find_fixedlength()
        67 this version of PCRE is not compiled with Unicode property
+
* 71: \N is not supported in a class
              support
+
* 72: too many forward references
        68  \c must be followed by an ASCII character
+
* 73: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
        69  \k is not followed by a braced, angle-bracketed, or quoted name
+
* 74: invalid UTF-16 string (specifically UTF-16)
        70  internal error: unknown opcode in find_fixedlength()
+
* 75: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)
        71  \N is not supported in a class
+
* 76: character value in \u.... sequence is too large
        72  too many forward references
+
* 77: invalid UTF-32 string (specifically UTF-32)
        73  disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
+
* 78: setting UTF is disabled by the application
        74  invalid UTF-16 string (specifically UTF-16)
+
* 79: non-hex character in \x{} (closing brace missing?)
        75  name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)
+
* 80: non-octal character in \o{} (closing brace missing?)
        76  character value in \u.... sequence is too large
+
* 81: missing opening brace after \o
        77  invalid UTF-32 string (specifically UTF-32)
+
* 82: parentheses are too deeply nested
        78  setting UTF is disabled by the application
+
* 83: invalid range in character class
        79  non-hex character in \x{} (closing brace missing?)
+
* 84: group name must start with a non-digit
        80  non-octal character in \o{} (closing brace missing?)
+
* 85: parentheses are too deeply nested (stack check)
        81  missing opening brace after \o
 
        82  parentheses are too deeply nested
 
        83  invalid range in character class
 
        84  group name must start with a non-digit
 
        85  parentheses are too deeply nested (stack check)
 
  
 
== Example ==
 
== Example ==
<source lang="mIRC">//echo -a $regex($str(a,2700),/a*(a*)*b/) $regerrstr</source>
+
<source lang="mIRC">//echo -a $regex($str(a,2700),/(?<=a*)/) $regerrstr</source>
  
 
== Compatibility ==
 
== Compatibility ==

Latest revision as of 17:31, 21 December 2020

$regerrstr returns the PCRE error string of the compile function for the last regex call made, if any.

A regular expression must be compiled first, and then it's executed against a string.

If an error occurs in the compile function, $regerrstr is filled with an error string, corresponding to a positive number (listed below), but only the string is returned.

$regex and similar regex functions reporting number of matches ($regsubex with output variable or $regsub) will report a value of -14.

This value actually comes from the exec function, this is for convenience. $regex etc always return a negative value when an error occurs.

-14 is supposed to mean an internal pcre error, but this is only the case if $regerrstr is not set, then. You can find more info about on the regex page

Synopsis[edit]

$regerrstr

Parameters[edit]

None

Properties[edit]

None

List of error[edit]

  • 1: \ at end of pattern
  • 2: \c at end of pattern
  • 3: unrecognized character follows \
  • 4: numbers out of order in {} quantifier
  • 5: number too big in {} quantifier
  • 6: missing terminating ] for character class
  • 7: invalid escape sequence in character class
  • 8: range out of order in character class
  • 9: nothing to repeat
  • 10: [this code is not in use]
  • 11: internal error: unexpected repeat
  • 12: unrecognized character after (? or (?-
  • 13: POSIX named classes are supported only within a class
  • 14: missing )
  • 15: reference to non-existent subpattern
  • 16: erroffset passed as NULL
  • 17: unknown option bit(s) set
  • 18: missing ) after comment
  • 19: [this code is not in use]
  • 20: regular expression is too large
  • 21: failed to get memory
  • 22: unmatched parentheses
  • 23: internal error: code overflow
  • 24: unrecognized character after (?<
  • 25: lookbehind assertion is not fixed length
  • 26: malformed number or name after (?(
  • 27: conditional group contains more than two branches
  • 28: assertion expected after (?(
  • 29: (?R or (?[+-]digits must be followed by )
  • 30: unknown POSIX class name
  • 31: POSIX collating elements are not supported
  • 32: this version of PCRE is compiled without UTF support
  • 33: [this code is not in use]
  • 34: character value in \x{} or \o{} is too large
  • 35: invalid condition (?(0)
  • 36: \C not allowed in lookbehind assertion
  • 37: PCRE does not support \L, \l, \N{name}, \U, or \u
  • 38: number after (?C is > 255
  • 39: closing ) for (?C expected
  • 40: recursive call could loop indefinitely
  • 41: unrecognized character after (?P
  • 42: syntax error in subpattern name (missing terminator)
  • 43: two named subpatterns have the same name
  • 44: invalid UTF-8 string (specifically UTF-8)
  • 45: support for \P, \p, and \X has not been compiled
  • 46: malformed \P or \p sequence
  • 47: unknown property name after \P or \p
  • 48: subpattern name is too long (maximum 32 characters)
  • 49: too many named subpatterns (maximum 10000)
  • 50: [this code is not in use]
  • 51: octal value is greater than \377 in 8-bit non-UTF-8 mode
  • 52: internal error: overran compiling workspace
  • 53: internal error: previously-checked referenced subpattern not found
  • 54: DEFINE group contains more than one branch
  • 55: repeating a DEFINE group is not allowed
  • 56: inconsistent NEWLINE options
  • 57: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number
  • 58: a numbered reference must not be zero
  • 59: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)
  • 60: (*VERB) not recognized or malformed
  • 61: number is too big
  • 62: subpattern name expected
  • 63: digit expected after (?+
  • 64: ] is an invalid data character in JavaScript compatibility mode
  • 65: different names for subpatterns of the same number are not allowed
  • 66: (*MARK) must have an argument
  • 67: this version of PCRE is not compiled with Unicode property support
  • 68: \c must be followed by an ASCII character
  • 69: \k is not followed by a braced, angle-bracketed, or quoted name
  • 70: internal error: unknown opcode in find_fixedlength()
  • 71: \N is not supported in a class
  • 72: too many forward references
  • 73: disallowed Unicode code point (>= 0xd800 && <= 0xdfff)
  • 74: invalid UTF-16 string (specifically UTF-16)
  • 75: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)
  • 76: character value in \u.... sequence is too large
  • 77: invalid UTF-32 string (specifically UTF-32)
  • 78: setting UTF is disabled by the application
  • 79: non-hex character in \x{} (closing brace missing?)
  • 80: non-octal character in \o{} (closing brace missing?)
  • 81: missing opening brace after \o
  • 82: parentheses are too deeply nested
  • 83: invalid range in character class
  • 84: group name must start with a non-digit
  • 85: parentheses are too deeply nested (stack check)

Example[edit]

//echo -a $regex($str(a,2700),/(?<=a*)/) $regerrstr

Compatibility[edit]

Added: mIRC v5.9
Added on: 26 Apr 2001
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.


See Also[edit]

$regex