Improve error offsets for character classes (#548)

* Error offset should be advanced by one character for "[\d-z]"
  invalid range error

  The code does a 1-char lookahead for a hyphen, but then doesn't
  advance the pointer to consume the hyphen when returning the error.

  Perl's error message (with "use warnings") does advance to just
  after the hyphen, so PCRE2 should match.

  Fixes #545.

* Also improve error offsets for [[:bad:]], [[=...=]] and [z-\p{...}]
  cases
5 files changed
tree: fdb9c71b1a9aeb5d7fbf02cad989912de92afd3b
  1. .github/
  2. cmake/
  3. deps/
  4. doc/
  5. m4/
  6. maint/
  7. src/
  8. testdata/
  9. vms/
  10. .bazelrc
  11. .gitignore
  12. .gitmodules
  13. 132html
  14. AUTHORS
  15. autogen.sh
  16. BUILD.bazel
  17. build.zig
  18. ChangeLog
  19. CheckMan
  20. CleanTxt
  21. CMakeLists.txt
  22. config-cmake.h.in
  23. configure.ac
  24. COPYING
  25. Detrail
  26. HACKING
  27. index.md
  28. libpcre2-16.pc.in
  29. libpcre2-32.pc.in
  30. libpcre2-8.pc.in
  31. libpcre2-posix.pc.in
  32. LICENCE
  33. Makefile.am
  34. MODULE.bazel
  35. NEWS
  36. NON-AUTOTOOLS-BUILD
  37. pcre2-config.in
  38. pcre2_fuzzer.dict
  39. pcre2_fuzzer.options
  40. pcre2_fuzzer_16.dict
  41. pcre2_fuzzer_16.options
  42. pcre2_fuzzer_32.dict
  43. pcre2_fuzzer_32.options
  44. perltest.sh
  45. PrepareRelease
  46. README
  47. README.md
  48. RunGrepTest
  49. RunGrepTest.bat
  50. RunTest
  51. RunTest.bat
  52. WORKSPACE.bazel
README.md

PCRE2 - Perl-Compatible Regular Expressions

The PCRE2 library is a set of C functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. PCRE2 has its own native API, as well as a set of wrapper functions that correspond to the POSIX regular expression API. The PCRE2 library is free, even for building proprietary software. It comes in three forms, for processing 8-bit, 16-bit, or 32-bit code units, in either literal or UTF encoding.

PCRE2 was first released in 2015 to replace the API in the original PCRE library, which is now obsolete and no longer maintained. As well as a more flexible API, the code of PCRE2 has been much improved since the fork.

Download

As well as downloading from the GitHub site, you can download PCRE2 or the older, unmaintained PCRE1 library from an unofficial mirror at SourceForge.

You can check out the PCRE2 source code via Git or Subversion:

git clone https://github.com/PCRE2Project/pcre2.git
svn co    https://github.com/PCRE2Project/pcre2.git

Contributed Ports

If you just need the command-line PCRE2 tools on Windows, precompiled binary versions are available at this Rexegg page.

A PCRE2 port for z/OS, a mainframe operating system which uses EBCDIC as its default character encoding, can be found at http://www.cbttape.org (File 939).

Documentation

You can read the PCRE2 documentation here.

Comparisons to Perl's regular expression semantics can be found in the community authored Wikipedia entry for PCRE.

There is a curated summary of changes for each PCRE release, copies of documentation from older releases, and other useful information from the third party authored RexEgg PCRE Documentation and Change Log page.

Contact

To report a problem with the PCRE2 library, or to make a feature request, please use the PCRE2 GitHub issues tracker. There is a mailing list for discussion of PCRE2 issues and development at pcre2-dev@googlegroups.com, which is where any announcements will be made. You can browse the list archives.