mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-05 08:56:16 +01:00
regex: Add NEWLINE_ANYCRLF compile option
The PCRE_NEWLINE_ANYCRLF option is new in PCRE 7.1. With it set, the only only newline sequences recognised are CR, LF and CRLF.
This commit is contained in:
parent
7e8b5ea442
commit
c8c049b177
@ -112,7 +112,8 @@
|
||||
G_REGEX_DUPNAMES | \
|
||||
G_REGEX_NEWLINE_CR | \
|
||||
G_REGEX_NEWLINE_LF | \
|
||||
G_REGEX_NEWLINE_CRLF)
|
||||
G_REGEX_NEWLINE_CRLF | \
|
||||
G_REGEX_NEWLINE_ANYCRLF)
|
||||
|
||||
/* Mask of all the possible values for GRegexMatchFlags. */
|
||||
#define G_REGEX_MATCH_MASK (G_REGEX_MATCH_ANCHORED | \
|
||||
@ -138,6 +139,7 @@ G_STATIC_ASSERT (G_REGEX_DUPNAMES == PCRE_DUPNAMES);
|
||||
G_STATIC_ASSERT (G_REGEX_NEWLINE_CR == PCRE_NEWLINE_CR);
|
||||
G_STATIC_ASSERT (G_REGEX_NEWLINE_LF == PCRE_NEWLINE_LF);
|
||||
G_STATIC_ASSERT (G_REGEX_NEWLINE_CRLF == PCRE_NEWLINE_CRLF);
|
||||
G_STATIC_ASSERT (G_REGEX_NEWLINE_ANYCRLF == PCRE_NEWLINE_ANYCRLF);
|
||||
|
||||
G_STATIC_ASSERT (G_REGEX_MATCH_ANCHORED == PCRE_ANCHORED);
|
||||
G_STATIC_ASSERT (G_REGEX_MATCH_NOTBOL == PCRE_NOTBOL);
|
||||
|
@ -259,12 +259,18 @@ GQuark g_regex_error_quark (void);
|
||||
* be unique. This can be helpful for certain types of pattern when it
|
||||
* is known that only one instance of the named subpattern can ever be
|
||||
* matched.
|
||||
* @G_REGEX_NEWLINE_CR: Usually any newline character is recognized, if this
|
||||
* option is set, the only recognized newline character is '\r'.
|
||||
* @G_REGEX_NEWLINE_LF: Usually any newline character is recognized, if this
|
||||
* option is set, the only recognized newline character is '\n'.
|
||||
* @G_REGEX_NEWLINE_CRLF: Usually any newline character is recognized, if this
|
||||
* option is set, the only recognized newline character sequence is '\r\n'.
|
||||
* @G_REGEX_NEWLINE_CR: Usually any newline character or character sequence is
|
||||
* recognized. If this option is set, the only recognized newline character
|
||||
* is '\r'.
|
||||
* @G_REGEX_NEWLINE_LF: Usually any newline character or character sequence is
|
||||
* recognized. If this option is set, the only recognized newline character
|
||||
* is '\n'.
|
||||
* @G_REGEX_NEWLINE_CRLF: Usually any newline character or character sequence is
|
||||
* recognized. If this option is set, the only recognized newline character
|
||||
* sequence is '\r\n'.
|
||||
* @G_REGEX_NEWLINE_ANYCRLF: Usually any newline character or character sequence
|
||||
* is recognized. If this option is set, the only recognized newline character
|
||||
* sequences are '\r', '\n', and '\r\n'. Since: 2.34
|
||||
*
|
||||
* Flags specifying compile-time options.
|
||||
*
|
||||
@ -287,7 +293,8 @@ typedef enum
|
||||
G_REGEX_DUPNAMES = 1 << 19,
|
||||
G_REGEX_NEWLINE_CR = 1 << 20,
|
||||
G_REGEX_NEWLINE_LF = 1 << 21,
|
||||
G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF
|
||||
G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF,
|
||||
G_REGEX_NEWLINE_ANYCRLF = G_REGEX_NEWLINE_CR | 1 << 22
|
||||
} GRegexCompileFlags;
|
||||
|
||||
/**
|
||||
|
@ -2102,9 +2102,7 @@ main (int argc, char *argv[])
|
||||
#endif
|
||||
TEST_NEW_FAIL ("\\666", G_REGEX_RAW, G_REGEX_ERROR_INVALID_OCTAL_VALUE);
|
||||
TEST_NEW_FAIL ("^(?(DEFINE) abc | xyz ) ", 0, G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE);
|
||||
#if 0
|
||||
TEST_NEW_FAIL ("a", G_REGEX_NEWLINE_CRLF | G_REGEX_NEWLINE_ANYCRLF, G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS);
|
||||
#endif
|
||||
TEST_NEW_FAIL ("^(a)\\g{3", 0, G_REGEX_ERROR_MISSING_BACK_REFERENCE);
|
||||
TEST_NEW_FAIL ("^(a)\\g{0}", 0, G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE);
|
||||
TEST_NEW_FAIL ("abc(*FAIL:123)xyz", 0, G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN);
|
||||
|
Loading…
Reference in New Issue
Block a user