esruby 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +6 -6
  3. data/bin/esruby +9 -0
  4. data/lib/esruby.rb +8 -0
  5. data/resources/mruby/build_config.rb +0 -1
  6. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -1
  7. data/resources/project_template/app/app.rb +2 -0
  8. data/resources/project_template/config.rb +35 -0
  9. data/resources/project_template/www/index.html +17 -0
  10. metadata +6 -377
  11. data/resources/mruby/bin/mirb +0 -0
  12. data/resources/mruby/bin/mrbc +0 -0
  13. data/resources/mruby/bin/mruby +0 -0
  14. data/resources/mruby/bin/mruby-strip +0 -0
  15. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +0 -82
  16. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +0 -63
  17. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +0 -232
  18. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +0 -333
  19. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +0 -313
  20. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +0 -45
  21. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +0 -959
  22. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +0 -5
  23. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +0 -4981
  24. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +0 -67
  25. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +0 -113
  26. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +0 -35
  27. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +0 -473
  28. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +0 -370
  29. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +0 -92
  30. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +0 -877
  31. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +0 -2917
  32. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +0 -611
  33. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +0 -639
  34. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +0 -7
  35. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +0 -253
  36. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +0 -935
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +0 -551
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +0 -1015
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +0 -616
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +0 -1230
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +0 -21280
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +0 -21280
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +0 -273
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +0 -2421
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +0 -1144
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +0 -17
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +0 -29
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +0 -343
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +0 -54
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +0 -1552
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +0 -392
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +0 -392
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +0 -343
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +0 -1804
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +0 -21280
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +0 -1082
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +0 -708
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +0 -212
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +0 -180
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +0 -109
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +0 -204
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +0 -383
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +0 -76
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +0 -108
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +0 -112
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +0 -91
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +0 -65
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +0 -61
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +0 -128
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +0 -110
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +0 -46
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +0 -46
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +0 -46
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +0 -108
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +0 -68
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +0 -57
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +0 -60
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +0 -64
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +0 -61
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +0 -108
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +0 -55
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +0 -48
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +0 -48
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +0 -58
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +0 -51
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +0 -68
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +0 -57
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +0 -46
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +0 -2786
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +0 -517
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +0 -243
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +0 -216
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +0 -368
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +0 -426
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +0 -757
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +0 -458
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +0 -86
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +0 -233
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +0 -474
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +0 -2953
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +0 -195
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +0 -292
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +0 -158
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +0 -110
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +0 -225
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +0 -521
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +0 -1082
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +0 -270
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +0 -180
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +0 -92
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +0 -86
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +0 -202
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +0 -9909
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +0 -390
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +0 -389
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +0 -61
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +0 -98
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +0 -106
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +0 -76
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +0 -59
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +0 -52
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +0 -125
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +0 -103
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +0 -31
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +0 -31
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +0 -31
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +0 -95
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +0 -62
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +0 -45
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +0 -48
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +0 -55
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +0 -49
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +0 -104
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +0 -45
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +0 -35
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +0 -33
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +0 -46
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +0 -36
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +0 -56
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +0 -46
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +0 -46
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +0 -31
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +0 -2823
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +0 -520
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +0 -214
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +0 -185
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +0 -348
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +0 -679
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +0 -740
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +0 -437
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +0 -67
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +0 -206
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +0 -445
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +0 -2983
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +0 -177
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +0 -270
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +0 -151
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +0 -99
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +0 -215
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +0 -496
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +0 -1079
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +0 -1012
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +0 -255
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +0 -42
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +0 -527
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +0 -12
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +0 -12
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +0 -12
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +0 -12
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +0 -13
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +0 -9636
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +0 -309
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +0 -7844
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +0 -369
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +0 -123
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +0 -23
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +0 -98
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +0 -89
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +0 -66
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +0 -20
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +0 -20
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +0 -331
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +0 -133
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +0 -653
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +0 -653
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +0 -653
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +0 -45
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +0 -45
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +0 -45
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +0 -45
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +0 -45
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +0 -45
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +0 -45
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +0 -45
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +0 -45
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +0 -45
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +0 -45
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +0 -45
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +0 -90
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +0 -45
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +0 -45
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +0 -45
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +0 -45
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +0 -45
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +0 -45
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +0 -130
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +0 -156
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +0 -45
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +0 -45
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +0 -45
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +0 -45
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +0 -45
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +0 -45
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +0 -45
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +0 -45
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +0 -45
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +0 -45
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +0 -45
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +0 -45
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +0 -45
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +0 -45
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +0 -82
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +0 -45
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +0 -45
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +0 -45
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +0 -45
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +0 -45
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +0 -45
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +0 -141
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +0 -131
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +0 -45
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +0 -45
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +0 -318
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +0 -198
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +0 -198
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +0 -8386
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +0 -186
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +0 -3582
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +0 -7049
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +0 -231
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +0 -662
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +0 -84
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +0 -2744
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +0 -8560
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +0 -1614
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +0 -151
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +0 -210
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +0 -94
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +0 -766
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +0 -92
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +0 -199
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +0 -172
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +0 -159
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +0 -211
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +0 -43
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +0 -179
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +0 -150
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +0 -1562
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +0 -655
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +0 -3298
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +0 -312
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +0 -98
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +0 -198
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +0 -922
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +0 -710
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +0 -71
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +0 -1291
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +0 -174
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +0 -406
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +0 -845
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +0 -3180
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +0 -419
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +0 -146
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +0 -5488
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +0 -237
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +0 -110
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +0 -484
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +0 -289
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +0 -1766
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +0 -985
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +0 -2008
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +0 -2515
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +0 -404
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +0 -1881
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +0 -269
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +0 -421
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +0 -2014
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +0 -164
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +0 -1348
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +0 -547
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +0 -810
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +0 -2836
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +0 -332
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +0 -3
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +0 -611
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +0 -15
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +0 -11
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +0 -4
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +0 -43
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +0 -7
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +0 -707
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +0 -12
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +0 -17
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +0 -2
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +0 -5306
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +0 -1337
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +0 -135
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +0 -89
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +0 -9
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +0 -329
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +0 -430
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +0 -35
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +0 -296
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +0 -296
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +0 -22
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +0 -3813
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +0 -19
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +0 -16
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +0 -13
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +0 -16
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +0 -77
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +0 -32
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +0 -80
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +0 -95
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +0 -624
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +0 -772
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +0 -1319
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +0 -672
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +0 -4801
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +0 -717
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +0 -121
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +0 -8798
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +0 -2726
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +0 -713
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +0 -713
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +0 -713
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +0 -181
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +0 -21
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +0 -476
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +0 -1269
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +0 -121
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +0 -505
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +0 -1022
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +0 -1019
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +0 -88
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +0 -12484
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +0 -27
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +0 -90
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +0 -90
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +0 -71
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +0 -71
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +0 -42
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +0 -145
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +0 -79
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +0 -148
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +0 -169
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +0 -1094
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +0 -1849
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +0 -2137
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +0 -1473
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +0 -8019
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +0 -1371
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +0 -182
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +0 -91
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +0 -166
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +0 -197
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +0 -23
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +0 -364
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +0 -94
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +0 -264
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +0 -201
@@ -1,86 +0,0 @@
1
- <html>
2
- <head>
3
- <title>pcrelimits specification</title>
4
- </head>
5
- <body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
6
- <h1>pcrelimits man page</h1>
7
- <p>
8
- Return to the <a href="index.html">PCRE index page</a>.
9
- </p>
10
- <p>
11
- This page is part of the PCRE HTML documentation. It was generated automatically
12
- from the original man page. If there is any nonsense in it, please consult the
13
- man page, in case the conversion went wrong.
14
- <br>
15
- <br><b>
16
- SIZE AND OTHER LIMITATIONS
17
- </b><br>
18
- <P>
19
- There are some size limitations in PCRE but it is hoped that they will never in
20
- practice be relevant.
21
- </P>
22
- <P>
23
- The maximum length of a compiled pattern is approximately 64K data units (bytes
24
- for the 8-bit library, 32-bit units for the 32-bit library, and 32-bit units for
25
- the 32-bit library) if PCRE is compiled with the default internal linkage size
26
- of 2 bytes. If you want to process regular expressions that are truly enormous,
27
- you can compile PCRE with an internal linkage size of 3 or 4 (when building the
28
- 16-bit or 32-bit library, 3 is rounded up to 4). See the <b>README</b> file in
29
- the source distribution and the
30
- <a href="pcrebuild.html"><b>pcrebuild</b></a>
31
- documentation for details. In these cases the limit is substantially larger.
32
- However, the speed of execution is slower.
33
- </P>
34
- <P>
35
- All values in repeating quantifiers must be less than 65536.
36
- </P>
37
- <P>
38
- There is no limit to the number of parenthesized subpatterns, but there can be
39
- no more than 65535 capturing subpatterns.
40
- </P>
41
- <P>
42
- There is a limit to the number of forward references to subsequent subpatterns
43
- of around 200,000. Repeated forward references with fixed upper limits, for
44
- example, (?2){0,100} when subpattern number 2 is to the right, are included in
45
- the count. There is no limit to the number of backward references.
46
- </P>
47
- <P>
48
- The maximum length of name for a named subpattern is 32 characters, and the
49
- maximum number of named subpatterns is 10000.
50
- </P>
51
- <P>
52
- The maximum length of a name in a (*MARK), (*PRUNE), (*SKIP), or (*THEN) verb
53
- is 255 for the 8-bit library and 65535 for the 16-bit and 32-bit library.
54
- </P>
55
- <P>
56
- The maximum length of a subject string is the largest positive number that an
57
- integer variable can hold. However, when using the traditional matching
58
- function, PCRE uses recursion to handle subpatterns and indefinite repetition.
59
- This means that the available stack space may limit the size of a subject
60
- string that can be processed by certain patterns. For a discussion of stack
61
- issues, see the
62
- <a href="pcrestack.html"><b>pcrestack</b></a>
63
- documentation.
64
- </P>
65
- <br><b>
66
- AUTHOR
67
- </b><br>
68
- <P>
69
- Philip Hazel
70
- <br>
71
- University Computing Service
72
- <br>
73
- Cambridge CB2 3QH, England.
74
- <br>
75
- </P>
76
- <br><b>
77
- REVISION
78
- </b><br>
79
- <P>
80
- Last updated: 04 May 2012
81
- <br>
82
- Copyright &copy; 1997-2012 University of Cambridge.
83
- <br>
84
- <p>
85
- Return to the <a href="index.html">PCRE index page</a>.
86
- </p>
@@ -1,233 +0,0 @@
1
- <html>
2
- <head>
3
- <title>pcrematching specification</title>
4
- </head>
5
- <body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
6
- <h1>pcrematching man page</h1>
7
- <p>
8
- Return to the <a href="index.html">PCRE index page</a>.
9
- </p>
10
- <p>
11
- This page is part of the PCRE HTML documentation. It was generated automatically
12
- from the original man page. If there is any nonsense in it, please consult the
13
- man page, in case the conversion went wrong.
14
- <br>
15
- <ul>
16
- <li><a name="TOC1" href="#SEC1">PCRE MATCHING ALGORITHMS</a>
17
- <li><a name="TOC2" href="#SEC2">REGULAR EXPRESSIONS AS TREES</a>
18
- <li><a name="TOC3" href="#SEC3">THE STANDARD MATCHING ALGORITHM</a>
19
- <li><a name="TOC4" href="#SEC4">THE ALTERNATIVE MATCHING ALGORITHM</a>
20
- <li><a name="TOC5" href="#SEC5">ADVANTAGES OF THE ALTERNATIVE ALGORITHM</a>
21
- <li><a name="TOC6" href="#SEC6">DISADVANTAGES OF THE ALTERNATIVE ALGORITHM</a>
22
- <li><a name="TOC7" href="#SEC7">AUTHOR</a>
23
- <li><a name="TOC8" href="#SEC8">REVISION</a>
24
- </ul>
25
- <br><a name="SEC1" href="#TOC1">PCRE MATCHING ALGORITHMS</a><br>
26
- <P>
27
- This document describes the two different algorithms that are available in PCRE
28
- for matching a compiled regular expression against a given subject string. The
29
- "standard" algorithm is the one provided by the <b>pcre_exec()</b>,
30
- <b>pcre16_exec()</b> and <b>pcre32_exec()</b> functions. These work in the same
31
- as as Perl's matching function, and provide a Perl-compatible matching operation.
32
- The just-in-time (JIT) optimization that is described in the
33
- <a href="pcrejit.html"><b>pcrejit</b></a>
34
- documentation is compatible with these functions.
35
- </P>
36
- <P>
37
- An alternative algorithm is provided by the <b>pcre_dfa_exec()</b>,
38
- <b>pcre16_dfa_exec()</b> and <b>pcre32_dfa_exec()</b> functions; they operate in
39
- a different way, and are not Perl-compatible. This alternative has advantages
40
- and disadvantages compared with the standard algorithm, and these are described
41
- below.
42
- </P>
43
- <P>
44
- When there is only one possible way in which a given subject string can match a
45
- pattern, the two algorithms give the same answer. A difference arises, however,
46
- when there are multiple possibilities. For example, if the pattern
47
- <pre>
48
- ^&#60;.*&#62;
49
- </pre>
50
- is matched against the string
51
- <pre>
52
- &#60;something&#62; &#60;something else&#62; &#60;something further&#62;
53
- </pre>
54
- there are three possible answers. The standard algorithm finds only one of
55
- them, whereas the alternative algorithm finds all three.
56
- </P>
57
- <br><a name="SEC2" href="#TOC1">REGULAR EXPRESSIONS AS TREES</a><br>
58
- <P>
59
- The set of strings that are matched by a regular expression can be represented
60
- as a tree structure. An unlimited repetition in the pattern makes the tree of
61
- infinite size, but it is still a tree. Matching the pattern to a given subject
62
- string (from a given starting point) can be thought of as a search of the tree.
63
- There are two ways to search a tree: depth-first and breadth-first, and these
64
- correspond to the two matching algorithms provided by PCRE.
65
- </P>
66
- <br><a name="SEC3" href="#TOC1">THE STANDARD MATCHING ALGORITHM</a><br>
67
- <P>
68
- In the terminology of Jeffrey Friedl's book "Mastering Regular
69
- Expressions", the standard algorithm is an "NFA algorithm". It conducts a
70
- depth-first search of the pattern tree. That is, it proceeds along a single
71
- path through the tree, checking that the subject matches what is required. When
72
- there is a mismatch, the algorithm tries any alternatives at the current point,
73
- and if they all fail, it backs up to the previous branch point in the tree, and
74
- tries the next alternative branch at that level. This often involves backing up
75
- (moving to the left) in the subject string as well. The order in which
76
- repetition branches are tried is controlled by the greedy or ungreedy nature of
77
- the quantifier.
78
- </P>
79
- <P>
80
- If a leaf node is reached, a matching string has been found, and at that point
81
- the algorithm stops. Thus, if there is more than one possible match, this
82
- algorithm returns the first one that it finds. Whether this is the shortest,
83
- the longest, or some intermediate length depends on the way the greedy and
84
- ungreedy repetition quantifiers are specified in the pattern.
85
- </P>
86
- <P>
87
- Because it ends up with a single path through the tree, it is relatively
88
- straightforward for this algorithm to keep track of the substrings that are
89
- matched by portions of the pattern in parentheses. This provides support for
90
- capturing parentheses and back references.
91
- </P>
92
- <br><a name="SEC4" href="#TOC1">THE ALTERNATIVE MATCHING ALGORITHM</a><br>
93
- <P>
94
- This algorithm conducts a breadth-first search of the tree. Starting from the
95
- first matching point in the subject, it scans the subject string from left to
96
- right, once, character by character, and as it does this, it remembers all the
97
- paths through the tree that represent valid matches. In Friedl's terminology,
98
- this is a kind of "DFA algorithm", though it is not implemented as a
99
- traditional finite state machine (it keeps multiple states active
100
- simultaneously).
101
- </P>
102
- <P>
103
- Although the general principle of this matching algorithm is that it scans the
104
- subject string only once, without backtracking, there is one exception: when a
105
- lookaround assertion is encountered, the characters following or preceding the
106
- current point have to be independently inspected.
107
- </P>
108
- <P>
109
- The scan continues until either the end of the subject is reached, or there are
110
- no more unterminated paths. At this point, terminated paths represent the
111
- different matching possibilities (if there are none, the match has failed).
112
- Thus, if there is more than one possible match, this algorithm finds all of
113
- them, and in particular, it finds the longest. The matches are returned in
114
- decreasing order of length. There is an option to stop the algorithm after the
115
- first match (which is necessarily the shortest) is found.
116
- </P>
117
- <P>
118
- Note that all the matches that are found start at the same point in the
119
- subject. If the pattern
120
- <pre>
121
- cat(er(pillar)?)?
122
- </pre>
123
- is matched against the string "the caterpillar catchment", the result will be
124
- the three strings "caterpillar", "cater", and "cat" that start at the fifth
125
- character of the subject. The algorithm does not automatically move on to find
126
- matches that start at later positions.
127
- </P>
128
- <P>
129
- There are a number of features of PCRE regular expressions that are not
130
- supported by the alternative matching algorithm. They are as follows:
131
- </P>
132
- <P>
133
- 1. Because the algorithm finds all possible matches, the greedy or ungreedy
134
- nature of repetition quantifiers is not relevant. Greedy and ungreedy
135
- quantifiers are treated in exactly the same way. However, possessive
136
- quantifiers can make a difference when what follows could also match what is
137
- quantified, for example in a pattern like this:
138
- <pre>
139
- ^a++\w!
140
- </pre>
141
- This pattern matches "aaab!" but not "aaa!", which would be matched by a
142
- non-possessive quantifier. Similarly, if an atomic group is present, it is
143
- matched as if it were a standalone pattern at the current point, and the
144
- longest match is then "locked in" for the rest of the overall pattern.
145
- </P>
146
- <P>
147
- 2. When dealing with multiple paths through the tree simultaneously, it is not
148
- straightforward to keep track of captured substrings for the different matching
149
- possibilities, and PCRE's implementation of this algorithm does not attempt to
150
- do this. This means that no captured substrings are available.
151
- </P>
152
- <P>
153
- 3. Because no substrings are captured, back references within the pattern are
154
- not supported, and cause errors if encountered.
155
- </P>
156
- <P>
157
- 4. For the same reason, conditional expressions that use a backreference as the
158
- condition or test for a specific group recursion are not supported.
159
- </P>
160
- <P>
161
- 5. Because many paths through the tree may be active, the \K escape sequence,
162
- which resets the start of the match when encountered (but may be on some paths
163
- and not on others), is not supported. It causes an error if encountered.
164
- </P>
165
- <P>
166
- 6. Callouts are supported, but the value of the <i>capture_top</i> field is
167
- always 1, and the value of the <i>capture_last</i> field is always -1.
168
- </P>
169
- <P>
170
- 7. The \C escape sequence, which (in the standard algorithm) always matches a
171
- single data unit, even in UTF-8, UTF-16 or UTF-32 modes, is not supported in
172
- these modes, because the alternative algorithm moves through the subject string
173
- one character (not data unit) at a time, for all active paths through the tree.
174
- </P>
175
- <P>
176
- 8. Except for (*FAIL), the backtracking control verbs such as (*PRUNE) are not
177
- supported. (*FAIL) is supported, and behaves like a failing negative assertion.
178
- </P>
179
- <br><a name="SEC5" href="#TOC1">ADVANTAGES OF THE ALTERNATIVE ALGORITHM</a><br>
180
- <P>
181
- Using the alternative matching algorithm provides the following advantages:
182
- </P>
183
- <P>
184
- 1. All possible matches (at a single point in the subject) are automatically
185
- found, and in particular, the longest match is found. To find more than one
186
- match using the standard algorithm, you have to do kludgy things with
187
- callouts.
188
- </P>
189
- <P>
190
- 2. Because the alternative algorithm scans the subject string just once, and
191
- never needs to backtrack (except for lookbehinds), it is possible to pass very
192
- long subject strings to the matching function in several pieces, checking for
193
- partial matching each time. Although it is possible to do multi-segment
194
- matching using the standard algorithm by retaining partially matched
195
- substrings, it is more complicated. The
196
- <a href="pcrepartial.html"><b>pcrepartial</b></a>
197
- documentation gives details of partial matching and discusses multi-segment
198
- matching.
199
- </P>
200
- <br><a name="SEC6" href="#TOC1">DISADVANTAGES OF THE ALTERNATIVE ALGORITHM</a><br>
201
- <P>
202
- The alternative algorithm suffers from a number of disadvantages:
203
- </P>
204
- <P>
205
- 1. It is substantially slower than the standard algorithm. This is partly
206
- because it has to search for all possible matches, but is also because it is
207
- less susceptible to optimization.
208
- </P>
209
- <P>
210
- 2. Capturing parentheses and back references are not supported.
211
- </P>
212
- <P>
213
- 3. Although atomic groups are supported, their use does not provide the
214
- performance advantage that it does for the standard algorithm.
215
- </P>
216
- <br><a name="SEC7" href="#TOC1">AUTHOR</a><br>
217
- <P>
218
- Philip Hazel
219
- <br>
220
- University Computing Service
221
- <br>
222
- Cambridge CB2 3QH, England.
223
- <br>
224
- </P>
225
- <br><a name="SEC8" href="#TOC1">REVISION</a><br>
226
- <P>
227
- Last updated: 08 January 2012
228
- <br>
229
- Copyright &copy; 1997-2012 University of Cambridge.
230
- <br>
231
- <p>
232
- Return to the <a href="index.html">PCRE index page</a>.
233
- </p>
@@ -1,474 +0,0 @@
1
- <html>
2
- <head>
3
- <title>pcrepartial specification</title>
4
- </head>
5
- <body bgcolor="#FFFFFF" text="#00005A" link="#0066FF" alink="#3399FF" vlink="#2222BB">
6
- <h1>pcrepartial man page</h1>
7
- <p>
8
- Return to the <a href="index.html">PCRE index page</a>.
9
- </p>
10
- <p>
11
- This page is part of the PCRE HTML documentation. It was generated automatically
12
- from the original man page. If there is any nonsense in it, please consult the
13
- man page, in case the conversion went wrong.
14
- <br>
15
- <ul>
16
- <li><a name="TOC1" href="#SEC1">PARTIAL MATCHING IN PCRE</a>
17
- <li><a name="TOC2" href="#SEC2">PARTIAL MATCHING USING pcre_exec() OR pcre[16|32]_exec()</a>
18
- <li><a name="TOC3" href="#SEC3">PARTIAL MATCHING USING pcre_dfa_exec() OR pcre[16|32]_dfa_exec()</a>
19
- <li><a name="TOC4" href="#SEC4">PARTIAL MATCHING AND WORD BOUNDARIES</a>
20
- <li><a name="TOC5" href="#SEC5">FORMERLY RESTRICTED PATTERNS</a>
21
- <li><a name="TOC6" href="#SEC6">EXAMPLE OF PARTIAL MATCHING USING PCRETEST</a>
22
- <li><a name="TOC7" href="#SEC7">MULTI-SEGMENT MATCHING WITH pcre_dfa_exec() OR pcre[16|32]_dfa_exec()</a>
23
- <li><a name="TOC8" href="#SEC8">MULTI-SEGMENT MATCHING WITH pcre_exec() OR pcre[16|32]_exec()</a>
24
- <li><a name="TOC9" href="#SEC9">ISSUES WITH MULTI-SEGMENT MATCHING</a>
25
- <li><a name="TOC10" href="#SEC10">AUTHOR</a>
26
- <li><a name="TOC11" href="#SEC11">REVISION</a>
27
- </ul>
28
- <br><a name="SEC1" href="#TOC1">PARTIAL MATCHING IN PCRE</a><br>
29
- <P>
30
- In normal use of PCRE, if the subject string that is passed to a matching
31
- function matches as far as it goes, but is too short to match the entire
32
- pattern, PCRE_ERROR_NOMATCH is returned. There are circumstances where it might
33
- be helpful to distinguish this case from other cases in which there is no
34
- match.
35
- </P>
36
- <P>
37
- Consider, for example, an application where a human is required to type in data
38
- for a field with specific formatting requirements. An example might be a date
39
- in the form <i>ddmmmyy</i>, defined by this pattern:
40
- <pre>
41
- ^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$
42
- </pre>
43
- If the application sees the user's keystrokes one by one, and can check that
44
- what has been typed so far is potentially valid, it is able to raise an error
45
- as soon as a mistake is made, by beeping and not reflecting the character that
46
- has been typed, for example. This immediate feedback is likely to be a better
47
- user interface than a check that is delayed until the entire string has been
48
- entered. Partial matching can also be useful when the subject string is very
49
- long and is not all available at once.
50
- </P>
51
- <P>
52
- PCRE supports partial matching by means of the PCRE_PARTIAL_SOFT and
53
- PCRE_PARTIAL_HARD options, which can be set when calling any of the matching
54
- functions. For backwards compatibility, PCRE_PARTIAL is a synonym for
55
- PCRE_PARTIAL_SOFT. The essential difference between the two options is whether
56
- or not a partial match is preferred to an alternative complete match, though
57
- the details differ between the two types of matching function. If both options
58
- are set, PCRE_PARTIAL_HARD takes precedence.
59
- </P>
60
- <P>
61
- If you want to use partial matching with just-in-time optimized code, you must
62
- call <b>pcre_study()</b>, <b>pcre16_study()</b> or <b>pcre32_study()</b> with one
63
- or both of these options:
64
- <pre>
65
- PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE
66
- PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE
67
- </pre>
68
- PCRE_STUDY_JIT_COMPILE should also be set if you are going to run non-partial
69
- matches on the same pattern. If the appropriate JIT study mode has not been set
70
- for a match, the interpretive matching code is used.
71
- </P>
72
- <P>
73
- Setting a partial matching option disables two of PCRE's standard
74
- optimizations. PCRE remembers the last literal data unit in a pattern, and
75
- abandons matching immediately if it is not present in the subject string. This
76
- optimization cannot be used for a subject string that might match only
77
- partially. If the pattern was studied, PCRE knows the minimum length of a
78
- matching string, and does not bother to run the matching function on shorter
79
- strings. This optimization is also disabled for partial matching.
80
- </P>
81
- <br><a name="SEC2" href="#TOC1">PARTIAL MATCHING USING pcre_exec() OR pcre[16|32]_exec()</a><br>
82
- <P>
83
- A partial match occurs during a call to <b>pcre_exec()</b> or
84
- <b>pcre[16|32]_exec()</b> when the end of the subject string is reached successfully,
85
- but matching cannot continue because more characters are needed. However, at
86
- least one character in the subject must have been inspected. This character
87
- need not form part of the final matched string; lookbehind assertions and the
88
- \K escape sequence provide ways of inspecting characters before the start of a
89
- matched substring. The requirement for inspecting at least one character exists
90
- because an empty string can always be matched; without such a restriction there
91
- would always be a partial match of an empty string at the end of the subject.
92
- </P>
93
- <P>
94
- If there are at least two slots in the offsets vector when a partial match is
95
- returned, the first slot is set to the offset of the earliest character that
96
- was inspected. For convenience, the second offset points to the end of the
97
- subject so that a substring can easily be identified.
98
- </P>
99
- <P>
100
- For the majority of patterns, the first offset identifies the start of the
101
- partially matched string. However, for patterns that contain lookbehind
102
- assertions, or \K, or begin with \b or \B, earlier characters have been
103
- inspected while carrying out the match. For example:
104
- <pre>
105
- /(?&#60;=abc)123/
106
- </pre>
107
- This pattern matches "123", but only if it is preceded by "abc". If the subject
108
- string is "xyzabc12", the offsets after a partial match are for the substring
109
- "abc12", because all these characters are needed if another match is tried
110
- with extra characters added to the subject.
111
- </P>
112
- <P>
113
- What happens when a partial match is identified depends on which of the two
114
- partial matching options are set.
115
- </P>
116
- <br><b>
117
- PCRE_PARTIAL_SOFT WITH pcre_exec() OR pcre[16|32]_exec()
118
- </b><br>
119
- <P>
120
- If PCRE_PARTIAL_SOFT is set when <b>pcre_exec()</b> or <b>pcre[16|32]_exec()</b>
121
- identifies a partial match, the partial match is remembered, but matching
122
- continues as normal, and other alternatives in the pattern are tried. If no
123
- complete match can be found, PCRE_ERROR_PARTIAL is returned instead of
124
- PCRE_ERROR_NOMATCH.
125
- </P>
126
- <P>
127
- This option is "soft" because it prefers a complete match over a partial match.
128
- All the various matching items in a pattern behave as if the subject string is
129
- potentially complete. For example, \z, \Z, and $ match at the end of the
130
- subject, as normal, and for \b and \B the end of the subject is treated as a
131
- non-alphanumeric.
132
- </P>
133
- <P>
134
- If there is more than one partial match, the first one that was found provides
135
- the data that is returned. Consider this pattern:
136
- <pre>
137
- /123\w+X|dogY/
138
- </pre>
139
- If this is matched against the subject string "abc123dog", both
140
- alternatives fail to match, but the end of the subject is reached during
141
- matching, so PCRE_ERROR_PARTIAL is returned. The offsets are set to 3 and 9,
142
- identifying "123dog" as the first partial match that was found. (In this
143
- example, there are two partial matches, because "dog" on its own partially
144
- matches the second alternative.)
145
- </P>
146
- <br><b>
147
- PCRE_PARTIAL_HARD WITH pcre_exec() OR pcre[16|32]_exec()
148
- </b><br>
149
- <P>
150
- If PCRE_PARTIAL_HARD is set for <b>pcre_exec()</b> or <b>pcre[16|32]_exec()</b>,
151
- PCRE_ERROR_PARTIAL is returned as soon as a partial match is found, without
152
- continuing to search for possible complete matches. This option is "hard"
153
- because it prefers an earlier partial match over a later complete match. For
154
- this reason, the assumption is made that the end of the supplied subject string
155
- may not be the true end of the available data, and so, if \z, \Z, \b, \B,
156
- or $ are encountered at the end of the subject, the result is
157
- PCRE_ERROR_PARTIAL, provided that at least one character in the subject has
158
- been inspected.
159
- </P>
160
- <P>
161
- Setting PCRE_PARTIAL_HARD also affects the way UTF-8 and UTF-16
162
- subject strings are checked for validity. Normally, an invalid sequence
163
- causes the error PCRE_ERROR_BADUTF8 or PCRE_ERROR_BADUTF16. However, in the
164
- special case of a truncated character at the end of the subject,
165
- PCRE_ERROR_SHORTUTF8 or PCRE_ERROR_SHORTUTF16 is returned when
166
- PCRE_PARTIAL_HARD is set.
167
- </P>
168
- <br><b>
169
- Comparing hard and soft partial matching
170
- </b><br>
171
- <P>
172
- The difference between the two partial matching options can be illustrated by a
173
- pattern such as:
174
- <pre>
175
- /dog(sbody)?/
176
- </pre>
177
- This matches either "dog" or "dogsbody", greedily (that is, it prefers the
178
- longer string if possible). If it is matched against the string "dog" with
179
- PCRE_PARTIAL_SOFT, it yields a complete match for "dog". However, if
180
- PCRE_PARTIAL_HARD is set, the result is PCRE_ERROR_PARTIAL. On the other hand,
181
- if the pattern is made ungreedy the result is different:
182
- <pre>
183
- /dog(sbody)??/
184
- </pre>
185
- In this case the result is always a complete match because that is found first,
186
- and matching never continues after finding a complete match. It might be easier
187
- to follow this explanation by thinking of the two patterns like this:
188
- <pre>
189
- /dog(sbody)?/ is the same as /dogsbody|dog/
190
- /dog(sbody)??/ is the same as /dog|dogsbody/
191
- </pre>
192
- The second pattern will never match "dogsbody", because it will always find the
193
- shorter match first.
194
- </P>
195
- <br><a name="SEC3" href="#TOC1">PARTIAL MATCHING USING pcre_dfa_exec() OR pcre[16|32]_dfa_exec()</a><br>
196
- <P>
197
- The DFA functions move along the subject string character by character, without
198
- backtracking, searching for all possible matches simultaneously. If the end of
199
- the subject is reached before the end of the pattern, there is the possibility
200
- of a partial match, again provided that at least one character has been
201
- inspected.
202
- </P>
203
- <P>
204
- When PCRE_PARTIAL_SOFT is set, PCRE_ERROR_PARTIAL is returned only if there
205
- have been no complete matches. Otherwise, the complete matches are returned.
206
- However, if PCRE_PARTIAL_HARD is set, a partial match takes precedence over any
207
- complete matches. The portion of the string that was inspected when the longest
208
- partial match was found is set as the first matching string, provided there are
209
- at least two slots in the offsets vector.
210
- </P>
211
- <P>
212
- Because the DFA functions always search for all possible matches, and there is
213
- no difference between greedy and ungreedy repetition, their behaviour is
214
- different from the standard functions when PCRE_PARTIAL_HARD is set. Consider
215
- the string "dog" matched against the ungreedy pattern shown above:
216
- <pre>
217
- /dog(sbody)??/
218
- </pre>
219
- Whereas the standard functions stop as soon as they find the complete match for
220
- "dog", the DFA functions also find the partial match for "dogsbody", and so
221
- return that when PCRE_PARTIAL_HARD is set.
222
- </P>
223
- <br><a name="SEC4" href="#TOC1">PARTIAL MATCHING AND WORD BOUNDARIES</a><br>
224
- <P>
225
- If a pattern ends with one of sequences \b or \B, which test for word
226
- boundaries, partial matching with PCRE_PARTIAL_SOFT can give counter-intuitive
227
- results. Consider this pattern:
228
- <pre>
229
- /\bcat\b/
230
- </pre>
231
- This matches "cat", provided there is a word boundary at either end. If the
232
- subject string is "the cat", the comparison of the final "t" with a following
233
- character cannot take place, so a partial match is found. However, normal
234
- matching carries on, and \b matches at the end of the subject when the last
235
- character is a letter, so a complete match is found. The result, therefore, is
236
- <i>not</i> PCRE_ERROR_PARTIAL. Using PCRE_PARTIAL_HARD in this case does yield
237
- PCRE_ERROR_PARTIAL, because then the partial match takes precedence.
238
- </P>
239
- <br><a name="SEC5" href="#TOC1">FORMERLY RESTRICTED PATTERNS</a><br>
240
- <P>
241
- For releases of PCRE prior to 8.00, because of the way certain internal
242
- optimizations were implemented in the <b>pcre_exec()</b> function, the
243
- PCRE_PARTIAL option (predecessor of PCRE_PARTIAL_SOFT) could not be used with
244
- all patterns. From release 8.00 onwards, the restrictions no longer apply, and
245
- partial matching with can be requested for any pattern.
246
- </P>
247
- <P>
248
- Items that were formerly restricted were repeated single characters and
249
- repeated metasequences. If PCRE_PARTIAL was set for a pattern that did not
250
- conform to the restrictions, <b>pcre_exec()</b> returned the error code
251
- PCRE_ERROR_BADPARTIAL (-13). This error code is no longer in use. The
252
- PCRE_INFO_OKPARTIAL call to <b>pcre_fullinfo()</b> to find out if a compiled
253
- pattern can be used for partial matching now always returns 1.
254
- </P>
255
- <br><a name="SEC6" href="#TOC1">EXAMPLE OF PARTIAL MATCHING USING PCRETEST</a><br>
256
- <P>
257
- If the escape sequence \P is present in a <b>pcretest</b> data line, the
258
- PCRE_PARTIAL_SOFT option is used for the match. Here is a run of <b>pcretest</b>
259
- that uses the date example quoted above:
260
- <pre>
261
- re&#62; /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
262
- data&#62; 25jun04\P
263
- 0: 25jun04
264
- 1: jun
265
- data&#62; 25dec3\P
266
- Partial match: 23dec3
267
- data&#62; 3ju\P
268
- Partial match: 3ju
269
- data&#62; 3juj\P
270
- No match
271
- data&#62; j\P
272
- No match
273
- </pre>
274
- The first data string is matched completely, so <b>pcretest</b> shows the
275
- matched substrings. The remaining four strings do not match the complete
276
- pattern, but the first two are partial matches. Similar output is obtained
277
- if DFA matching is used.
278
- </P>
279
- <P>
280
- If the escape sequence \P is present more than once in a <b>pcretest</b> data
281
- line, the PCRE_PARTIAL_HARD option is set for the match.
282
- </P>
283
- <br><a name="SEC7" href="#TOC1">MULTI-SEGMENT MATCHING WITH pcre_dfa_exec() OR pcre[16|32]_dfa_exec()</a><br>
284
- <P>
285
- When a partial match has been found using a DFA matching function, it is
286
- possible to continue the match by providing additional subject data and calling
287
- the function again with the same compiled regular expression, this time setting
288
- the PCRE_DFA_RESTART option. You must pass the same working space as before,
289
- because this is where details of the previous partial match are stored. Here is
290
- an example using <b>pcretest</b>, using the \R escape sequence to set the
291
- PCRE_DFA_RESTART option (\D specifies the use of the DFA matching function):
292
- <pre>
293
- re&#62; /^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$/
294
- data&#62; 23ja\P\D
295
- Partial match: 23ja
296
- data&#62; n05\R\D
297
- 0: n05
298
- </pre>
299
- The first call has "23ja" as the subject, and requests partial matching; the
300
- second call has "n05" as the subject for the continued (restarted) match.
301
- Notice that when the match is complete, only the last part is shown; PCRE does
302
- not retain the previously partially-matched string. It is up to the calling
303
- program to do that if it needs to.
304
- </P>
305
- <P>
306
- You can set the PCRE_PARTIAL_SOFT or PCRE_PARTIAL_HARD options with
307
- PCRE_DFA_RESTART to continue partial matching over multiple segments. This
308
- facility can be used to pass very long subject strings to the DFA matching
309
- functions.
310
- </P>
311
- <br><a name="SEC8" href="#TOC1">MULTI-SEGMENT MATCHING WITH pcre_exec() OR pcre[16|32]_exec()</a><br>
312
- <P>
313
- From release 8.00, the standard matching functions can also be used to do
314
- multi-segment matching. Unlike the DFA functions, it is not possible to
315
- restart the previous match with a new segment of data. Instead, new data must
316
- be added to the previous subject string, and the entire match re-run, starting
317
- from the point where the partial match occurred. Earlier data can be discarded.
318
- </P>
319
- <P>
320
- It is best to use PCRE_PARTIAL_HARD in this situation, because it does not
321
- treat the end of a segment as the end of the subject when matching \z, \Z,
322
- \b, \B, and $. Consider an unanchored pattern that matches dates:
323
- <pre>
324
- re&#62; /\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d/
325
- data&#62; The date is 23ja\P\P
326
- Partial match: 23ja
327
- </pre>
328
- At this stage, an application could discard the text preceding "23ja", add on
329
- text from the next segment, and call the matching function again. Unlike the
330
- DFA matching functions, the entire matching string must always be available,
331
- and the complete matching process occurs for each call, so more memory and more
332
- processing time is needed.
333
- </P>
334
- <P>
335
- <b>Note:</b> If the pattern contains lookbehind assertions, or \K, or starts
336
- with \b or \B, the string that is returned for a partial match includes
337
- characters that precede the partially matched string itself, because these must
338
- be retained when adding on more characters for a subsequent matching attempt.
339
- However, in some cases you may need to retain even earlier characters, as
340
- discussed in the next section.
341
- </P>
342
- <br><a name="SEC9" href="#TOC1">ISSUES WITH MULTI-SEGMENT MATCHING</a><br>
343
- <P>
344
- Certain types of pattern may give problems with multi-segment matching,
345
- whichever matching function is used.
346
- </P>
347
- <P>
348
- 1. If the pattern contains a test for the beginning of a line, you need to pass
349
- the PCRE_NOTBOL option when the subject string for any call does start at the
350
- beginning of a line. There is also a PCRE_NOTEOL option, but in practice when
351
- doing multi-segment matching you should be using PCRE_PARTIAL_HARD, which
352
- includes the effect of PCRE_NOTEOL.
353
- </P>
354
- <P>
355
- 2. Lookbehind assertions that have already been obeyed are catered for in the
356
- offsets that are returned for a partial match. However a lookbehind assertion
357
- later in the pattern could require even earlier characters to be inspected. You
358
- can handle this case by using the PCRE_INFO_MAXLOOKBEHIND option of the
359
- <b>pcre_fullinfo()</b> or <b>pcre[16|32]_fullinfo()</b> functions to obtain the length
360
- of the largest lookbehind in the pattern. This length is given in characters,
361
- not bytes. If you always retain at least that many characters before the
362
- partially matched string, all should be well. (Of course, near the start of the
363
- subject, fewer characters may be present; in that case all characters should be
364
- retained.)
365
- </P>
366
- <P>
367
- 3. Because a partial match must always contain at least one character, what
368
- might be considered a partial match of an empty string actually gives a "no
369
- match" result. For example:
370
- <pre>
371
- re&#62; /c(?&#60;=abc)x/
372
- data&#62; ab\P
373
- No match
374
- </pre>
375
- If the next segment begins "cx", a match should be found, but this will only
376
- happen if characters from the previous segment are retained. For this reason, a
377
- "no match" result should be interpreted as "partial match of an empty string"
378
- when the pattern contains lookbehinds.
379
- </P>
380
- <P>
381
- 4. Matching a subject string that is split into multiple segments may not
382
- always produce exactly the same result as matching over one single long string,
383
- especially when PCRE_PARTIAL_SOFT is used. The section "Partial Matching and
384
- Word Boundaries" above describes an issue that arises if the pattern ends with
385
- \b or \B. Another kind of difference may occur when there are multiple
386
- matching possibilities, because (for PCRE_PARTIAL_SOFT) a partial match result
387
- is given only when there are no completed matches. This means that as soon as
388
- the shortest match has been found, continuation to a new subject segment is no
389
- longer possible. Consider again this <b>pcretest</b> example:
390
- <pre>
391
- re&#62; /dog(sbody)?/
392
- data&#62; dogsb\P
393
- 0: dog
394
- data&#62; do\P\D
395
- Partial match: do
396
- data&#62; gsb\R\P\D
397
- 0: g
398
- data&#62; dogsbody\D
399
- 0: dogsbody
400
- 1: dog
401
- </pre>
402
- The first data line passes the string "dogsb" to a standard matching function,
403
- setting the PCRE_PARTIAL_SOFT option. Although the string is a partial match
404
- for "dogsbody", the result is not PCRE_ERROR_PARTIAL, because the shorter
405
- string "dog" is a complete match. Similarly, when the subject is presented to
406
- a DFA matching function in several parts ("do" and "gsb" being the first two)
407
- the match stops when "dog" has been found, and it is not possible to continue.
408
- On the other hand, if "dogsbody" is presented as a single string, a DFA
409
- matching function finds both matches.
410
- </P>
411
- <P>
412
- Because of these problems, it is best to use PCRE_PARTIAL_HARD when matching
413
- multi-segment data. The example above then behaves differently:
414
- <pre>
415
- re&#62; /dog(sbody)?/
416
- data&#62; dogsb\P\P
417
- Partial match: dogsb
418
- data&#62; do\P\D
419
- Partial match: do
420
- data&#62; gsb\R\P\P\D
421
- Partial match: gsb
422
- </pre>
423
- 5. Patterns that contain alternatives at the top level which do not all start
424
- with the same pattern item may not work as expected when PCRE_DFA_RESTART is
425
- used. For example, consider this pattern:
426
- <pre>
427
- 1234|3789
428
- </pre>
429
- If the first part of the subject is "ABC123", a partial match of the first
430
- alternative is found at offset 3. There is no partial match for the second
431
- alternative, because such a match does not start at the same point in the
432
- subject string. Attempting to continue with the string "7890" does not yield a
433
- match because only those alternatives that match at one point in the subject
434
- are remembered. The problem arises because the start of the second alternative
435
- matches within the first alternative. There is no problem with anchored
436
- patterns or patterns such as:
437
- <pre>
438
- 1234|ABCD
439
- </pre>
440
- where no string can be a partial match for both alternatives. This is not a
441
- problem if a standard matching function is used, because the entire match has
442
- to be rerun each time:
443
- <pre>
444
- re&#62; /1234|3789/
445
- data&#62; ABC123\P\P
446
- Partial match: 123
447
- data&#62; 1237890
448
- 0: 3789
449
- </pre>
450
- Of course, instead of using PCRE_DFA_RESTART, the same technique of re-running
451
- the entire match can also be used with the DFA matching functions. Another
452
- possibility is to work with two buffers. If a partial match at offset <i>n</i>
453
- in the first buffer is followed by "no match" when PCRE_DFA_RESTART is used on
454
- the second buffer, you can then try a new match starting at offset <i>n+1</i> in
455
- the first buffer.
456
- </P>
457
- <br><a name="SEC10" href="#TOC1">AUTHOR</a><br>
458
- <P>
459
- Philip Hazel
460
- <br>
461
- University Computing Service
462
- <br>
463
- Cambridge CB2 3QH, England.
464
- <br>
465
- </P>
466
- <br><a name="SEC11" href="#TOC1">REVISION</a><br>
467
- <P>
468
- Last updated: 24 June 2012
469
- <br>
470
- Copyright &copy; 1997-2012 University of Cambridge.
471
- <br>
472
- <p>
473
- Return to the <a href="index.html">PCRE index page</a>.
474
- </p>