Regex.h
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:3k
源码类别:

DVD

开发平台:

Unix_Linux

  1. // This may look like C code, but it is really -*- C++ -*-
  2. /* 
  3. Copyright (C) 1988 Free Software Foundation
  4.     written by Doug Lea (dl@rocky.oswego.edu)
  5. This file is part of the GNU C++ Library.  This library is free
  6. software; you can redistribute it and/or modify it under the terms of
  7. the GNU Library General Public License as published by the Free
  8. Software Foundation; either version 2 of the License, or (at your
  9. option) any later version.  This library is distributed in the hope
  10. that it will be useful, but WITHOUT ANY WARRANTY; without even the
  11. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  12. PURPOSE.  See the GNU Library General Public License for more details.
  13. You should have received a copy of the GNU Library General Public
  14. License along with this library; if not, write to the Free Software
  15. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  16. */
  17. #ifndef _Regex_h
  18. #ifdef __GNUG__
  19. #pragma interface
  20. #endif
  21. #define _Regex_h 1
  22. #if defined(SHORT_NAMES) || defined(VMS)
  23. #define re_compile_pattern recmppat
  24. #define re_pattern_buffer repatbuf
  25. #define re_registers reregs
  26. #endif
  27. struct re_pattern_buffer;       // defined elsewhere
  28. struct re_registers;
  29. class Regex
  30. {
  31. private:
  32.                      Regex(const Regex&) {}  // no X(X&)
  33.   void               operator = (const Regex&) {} // no assignment
  34. protected:
  35.   re_pattern_buffer* buf;
  36.   re_registers*      reg;
  37. public:
  38.                      Regex(const char* t, 
  39.                            int fast = 0, 
  40.                            int bufsize = 40, 
  41.                            const char* transtable = 0);
  42.                     ~Regex();
  43.   int                match(const char* s, int len, int pos = 0) const;
  44.   int                search(const char* s, int len, 
  45.                             int& matchlen, int startpos = 0) const;
  46.   int                match_info(int& start, int& length, int nth = 0) const;
  47.   int                OK() const;  // representation invariant
  48. };
  49. // some built in regular expressions
  50. extern const Regex RXwhite;          // = "[ ntrvf]+"
  51. extern const Regex RXint;            // = "-?[0-9]+"
  52. extern const Regex RXdouble;         // = "-?\(\([0-9]+\.[0-9]*\)\|
  53.                                      //    \([0-9]+\)\|\(\.[0-9]+\)\)
  54.                                      //    \([eE][---+]?[0-9]+\)?"
  55. extern const Regex RXalpha;          // = "[A-Za-z]+"
  56. extern const Regex RXlowercase;      // = "[a-z]+"
  57. extern const Regex RXuppercase;      // = "[A-Z]+"
  58. extern const Regex RXalphanum;       // = "[0-9A-Za-z]+"
  59. extern const Regex RXidentifier;     // = "[A-Za-z_][A-Za-z0-9_]*"
  60. #endif