| 58 |
pattern, with a new opcode that causes them to be skipped at execution |
pattern, with a new opcode that causes them to be skipped at execution |
| 59 |
time. |
time. |
| 60 |
|
|
| 61 |
13. Added the PCRE_JAVASCRIPT_COMPAT option. This currently does two things: |
13. Added the PCRE_JAVASCRIPT_COMPAT option. This makes the following changes |
| 62 |
|
to the way PCRE behaves: |
| 63 |
|
|
| 64 |
(a) A lone ] character is dis-allowed (Perl treats it as data). |
(a) A lone ] character is dis-allowed (Perl treats it as data). |
| 65 |
|
|
| 66 |
(b) A back reference to an unmatched subpattern matches an empty string |
(b) A back reference to an unmatched subpattern matches an empty string |
| 67 |
(Perl fails the current match path). |
(Perl fails the current match path). |
| 68 |
|
|
| 69 |
|
(c) A data ] in a character class must be notated as \] because if the |
| 70 |
|
first data character in a class is ], it defines an empty class. (In |
| 71 |
|
Perl it is not possible to have an empty class.) The empty class [] |
| 72 |
|
never matches; it forces failure and is equivalent to (*FAIL) or (?!). |
| 73 |
|
The negative empty class [^] matches any one character, independently |
| 74 |
|
of the DOTALL setting. |
| 75 |
|
|
| 76 |
14. A pattern such as /(?2)[]a()b](abc)/ which had a forward reference to a |
14. A pattern such as /(?2)[]a()b](abc)/ which had a forward reference to a |
| 77 |
non-existent subpattern following a character class starting with ']' and |
non-existent subpattern following a character class starting with ']' and |
| 78 |
containing () gave an internal compiling error instead of "reference to |
containing () gave an internal compiling error instead of "reference to |
| 81 |
existencd of the subpattern, it was treating the data ']' as terminating |
existencd of the subpattern, it was treating the data ']' as terminating |
| 82 |
the class, so got the count wrong. When actually compiling, the reference |
the class, so got the count wrong. When actually compiling, the reference |
| 83 |
was subsequently set up correctly.) |
was subsequently set up correctly.) |
| 84 |
|
|
| 85 |
|
15. The "always fail" assertion (?!) is optimzed to (*FAIL) by pcre_compile; |
| 86 |
|
it was being rejected as not supported by pcre_dfa_exec(), even though |
| 87 |
|
other assertions are supported. I have made pcre_dfa_exec() support |
| 88 |
|
(*FAIL). |
| 89 |
|
|
| 90 |
|
|
| 91 |
Version 7.6 28-Jan-08 |
Version 7.6 28-Jan-08 |