mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
use PCRE syntax instead of the beautiful new (?i ...) syntax
This commit is contained in:
parent
726424f371
commit
85c4b0d285
6 changed files with 12 additions and 14 deletions
5
NEWS
5
NEWS
|
@ -262,9 +262,8 @@ New Functionality
|
||||||
yields F, though it yields T for "xfOObar".
|
yields F, though it yields T for "xfOObar".
|
||||||
|
|
||||||
You can achieve the same functionality for a subpattern enclosed in
|
You can achieve the same functionality for a subpattern enclosed in
|
||||||
parentheses by adding "+i" to the open parenthesis, optionally followed
|
parentheses by adding "?i:" to the open parenthesis. So for example
|
||||||
by whitespace. So for example "/foo|(+i bar)/" will match "BaR", but
|
"/foo|(?i:bar)/" will match "BaR", but not "FoO".
|
||||||
not "FoO".
|
|
||||||
|
|
||||||
For both ways of specifying case-insensitivity, characters enclosed in
|
For both ways of specifying case-insensitivity, characters enclosed in
|
||||||
double quotes maintain their case-sensitivity. So for example /"foo"/i
|
double quotes maintain their case-sensitivity. So for example /"foo"/i
|
||||||
|
|
|
@ -256,9 +256,8 @@ Here is a more detailed description of each type:
|
||||||
a "foo", "Foo", "BaR", etc.
|
a "foo", "Foo", "BaR", etc.
|
||||||
|
|
||||||
You can also introduce a case-insensitive sub-pattern by enclosing it
|
You can also introduce a case-insensitive sub-pattern by enclosing it
|
||||||
in ``(+i``<pattern>``)``. For clarity, you can optionally include
|
in ``(?i:``<pattern>``)``. So, for example, ``/foo|(?i:bar)/`` will
|
||||||
trailing whitespace after the ``+i`` designator. So, for example,
|
match "foo" and "BaR", but *not* "Foo".
|
||||||
``/foo|(+i bar)/`` will match "foo" and "BaR", but *not* "Foo".
|
|
||||||
|
|
||||||
For both ways of specifying case-insensitivity, characters enclosed
|
For both ways of specifying case-insensitivity, characters enclosed
|
||||||
in double quotes maintain their case-sensitivity. So for example
|
in double quotes maintain their case-sensitivity. So for example
|
||||||
|
|
|
@ -104,7 +104,7 @@ void Specific_RE_Matcher::AddPat(const char* new_pat,
|
||||||
|
|
||||||
void Specific_RE_Matcher::MakeCaseInsensitive()
|
void Specific_RE_Matcher::MakeCaseInsensitive()
|
||||||
{
|
{
|
||||||
const char fmt[] = "(+i %s)";
|
const char fmt[] = "(?i:%s)";
|
||||||
int n = strlen(pattern_text) + strlen(fmt);
|
int n = strlen(pattern_text) + strlen(fmt);
|
||||||
|
|
||||||
char* s = new char[n + 5 /* slop */];
|
char* s = new char[n + 5 /* slop */];
|
||||||
|
|
|
@ -114,7 +114,7 @@ CCL_EXPR ("[:"[[:alpha:]]+":]")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"(+i"[ \t]* case_insensitive = 1; return TOK_CASE_INSENSITIVE;
|
"(?i:" case_insensitive = 1; return TOK_CASE_INSENSITIVE;
|
||||||
|
|
||||||
[a-zA-Z] {
|
[a-zA-Z] {
|
||||||
if ( case_insensitive )
|
if ( case_insensitive )
|
||||||
|
|
|
@ -29,6 +29,6 @@ case-sensitive pattern (PASS)
|
||||||
/i pattern concatenation (FAIL)
|
/i pattern concatenation (FAIL)
|
||||||
/i pattern character class (FAIL)
|
/i pattern character class (FAIL)
|
||||||
/i pattern character class (PASS)
|
/i pattern character class (PASS)
|
||||||
(+i ...) pattern construct (PASS)
|
(?i:...) pattern construct (PASS)
|
||||||
(+i ...) pattern construct (FAIL)
|
(?i:...) pattern construct (FAIL)
|
||||||
(+i ...) pattern construct (PASS)
|
(?i:...) pattern construct (PASS)
|
||||||
|
|
|
@ -61,8 +61,8 @@ event bro_init()
|
||||||
test_case( "/i pattern character class", /ba[0a-c99S-Z0]/i & /bEz/ == "bArbEz" );
|
test_case( "/i pattern character class", /ba[0a-c99S-Z0]/i & /bEz/ == "bArbEz" );
|
||||||
test_case( "/i pattern character class", /ba[0a-c99M-S0]/i & /bEz/ == "bArbEz" );
|
test_case( "/i pattern character class", /ba[0a-c99M-S0]/i & /bEz/ == "bArbEz" );
|
||||||
|
|
||||||
test_case( "(+i ...) pattern construct", /foo|(+i bar)/ in "xBAry" );
|
test_case( "(?i:...) pattern construct", /foo|(?i:bar)/ in "xBAry" );
|
||||||
test_case( "(+i ...) pattern construct", /foo|(+i bar)/ in "xFOoy" );
|
test_case( "(?i:...) pattern construct", /foo|(?i:bar)/ in "xFOoy" );
|
||||||
test_case( "(+i ...) pattern construct", /foo|(+i bar)/ | /foo/i in "xFOoy" );
|
test_case( "(?i:...) pattern construct", /foo|(?i:bar)/ | /foo/i in "xFOoy" );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue