Lines Matching refs:pattern

529 LOCAL(Py_ssize_t) SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern);
532 SRE_COUNT(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
543 switch (pattern[0]) {
547 TRACE(("|%p|%p|COUNT IN\n", pattern, ptr));
548 while (ptr < end && SRE_CHARSET(pattern + 2, *ptr))
554 TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr));
562 TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr));
568 chr = pattern[1];
569 TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr));
576 chr = pattern[1];
577 TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr));
584 chr = pattern[1];
585 TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr));
592 chr = pattern[1];
593 TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr));
599 /* repeated single character pattern */
600 TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr));
602 i = SRE_MATCH(state, pattern);
608 TRACE(("|%p|%p|COUNT %d\n", pattern, ptr,
613 TRACE(("|%p|%p|COUNT %d\n", pattern, ptr, ptr - (SRE_CHAR*) state->ptr));
619 SRE_INFO(SRE_STATE* state, SRE_CODE* pattern)
630 if (pattern[3] && (end - ptr) < pattern[3])
634 if (pattern[2] & SRE_INFO_PREFIX && pattern[5] > 1) {
636 for (i = 0; i < pattern[5]; i++)
637 if ((SRE_CODE) ptr[i] != pattern[7 + i])
639 return pattern[0] + 2 * pattern[6];
641 return pattern[0];
796 nextctx->pattern = nextpattern; \
807 SRE_CODE* pattern;
817 /* check if string matches the given pattern. returns <0 for
820 SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
831 TRACE(("|%p|%p|ENTER\n", pattern, state->ptr));
836 ctx->pattern = pattern;
843 if (ctx->pattern[0] == SRE_OP_INFO) {
846 if (ctx->pattern[3] && (end - ctx->ptr) < ctx->pattern[3]) {
848 (end - ctx->ptr), ctx->pattern[3]));
851 ctx->pattern += ctx->pattern[1] + 1;
859 switch (*ctx->pattern++) {
864 TRACE(("|%p|%p|MARK %d\n", ctx->pattern,
865 ctx->ptr, ctx->pattern[0]));
866 i = ctx->pattern[0];
880 ctx->pattern++;
886 TRACE(("|%p|%p|LITERAL %d\n", ctx->pattern,
887 ctx->ptr, *ctx->pattern));
888 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] != ctx->pattern[0])
890 ctx->pattern++;
897 TRACE(("|%p|%p|NOT_LITERAL %d\n", ctx->pattern,
898 ctx->ptr, *ctx->pattern));
899 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] == ctx->pattern[0])
901 ctx->pattern++;
906 /* end of pattern */
907 TRACE(("|%p|%p|SUCCESS\n", ctx->pattern, ctx->ptr));
914 TRACE(("|%p|%p|AT %d\n", ctx->pattern, ctx->ptr, *ctx->pattern));
915 if (!SRE_AT(state, ctx->ptr, *ctx->pattern))
917 ctx->pattern++;
923 TRACE(("|%p|%p|CATEGORY %d\n", ctx->pattern,
924 ctx->ptr, *ctx->pattern));
925 if (ctx->ptr >= end || !sre_category(ctx->pattern[0], ctx->ptr[0]))
927 ctx->pattern++;
934 TRACE(("|%p|%p|ANY\n", ctx->pattern, ctx->ptr));
943 TRACE(("|%p|%p|ANY_ALL\n", ctx->pattern, ctx->ptr));
952 TRACE(("|%p|%p|IN\n", ctx->pattern, ctx->ptr));
953 if (ctx->ptr >= end || !SRE_CHARSET(ctx->pattern + 1, *ctx->ptr))
955 ctx->pattern += ctx->pattern[0];
961 ctx->pattern, ctx->ptr, ctx->pattern[0]));
963 state->lower(*ctx->ptr) != state->lower(*ctx->pattern))
965 ctx->pattern++;
971 ctx->pattern, ctx->ptr, *ctx->pattern));
973 state->lower(*ctx->ptr) == state->lower(*ctx->pattern))
975 ctx->pattern++;
980 TRACE(("|%p|%p|IN_IGNORE\n", ctx->pattern, ctx->ptr));
982 || !SRE_CHARSET(ctx->pattern+1,
985 ctx->pattern += ctx->pattern[0];
993 TRACE(("|%p|%p|JUMP %d\n", ctx->pattern,
994 ctx->ptr, ctx->pattern[0]));
995 ctx->pattern += ctx->pattern[0];
1001 TRACE(("|%p|%p|BRANCH\n", ctx->pattern, ctx->ptr));
1006 for (; ctx->pattern[0]; ctx->pattern += ctx->pattern[0]) {
1007 if (ctx->pattern[1] == SRE_OP_LITERAL &&
1009 (SRE_CODE) *ctx->ptr != ctx->pattern[2]))
1011 if (ctx->pattern[1] == SRE_OP_IN &&
1013 !SRE_CHARSET(ctx->pattern + 3, (SRE_CODE) *ctx->ptr)))
1016 DO_JUMP(JUMP_BRANCH, jump_branch, ctx->pattern+1);
1041 TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
1042 ctx->pattern[1], ctx->pattern[2]));
1044 if (ctx->ptr + ctx->pattern[1] > end)
1049 ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[2]);
1057 string. check if the rest of the pattern matches,
1060 if (ctx->count < (Py_ssize_t) ctx->pattern[1])
1063 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
1071 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_LITERAL) {
1073 the rest of the pattern cannot possibly match */
1074 ctx->u.chr = ctx->pattern[ctx->pattern[0]+1];
1076 while (ctx->count >= (Py_ssize_t) ctx->pattern[1] &&
1081 if (ctx->count < (Py_ssize_t) ctx->pattern[1])
1085 ctx->pattern+ctx->pattern[0]);
1099 while (ctx->count >= (Py_ssize_t) ctx->pattern[1]) {
1102 ctx->pattern+ctx->pattern[0]);
1124 TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
1125 ctx->pattern[1], ctx->pattern[2]));
1127 if (ctx->ptr + ctx->pattern[1] > end)
1132 if (ctx->pattern[1] == 0)
1135 /* count using pattern min as the maximum */
1136 ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[1]);
1139 if (ret < (Py_ssize_t) ctx->pattern[1])
1147 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
1155 while ((Py_ssize_t)ctx->pattern[2] == 65535
1156 || ctx->count <= (Py_ssize_t)ctx->pattern[2]) {
1159 ctx->pattern+ctx->pattern[0]);
1165 ret = SRE_COUNT(state, ctx->pattern+3, 1);
1182 TRACE(("|%p|%p|REPEAT %d %d\n", ctx->pattern, ctx->ptr,
1183 ctx->pattern[1], ctx->pattern[2]));
1192 ctx->u.rep->pattern = ctx->pattern;
1198 DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]);
1223 TRACE(("|%p|%p|MAX_UNTIL %d\n", ctx->pattern,
1226 if (ctx->count < ctx->u.rep->pattern[1]) {
1230 ctx->u.rep->pattern+3);
1240 if ((ctx->count < ctx->u.rep->pattern[2] ||
1241 ctx->u.rep->pattern[2] == 65535) &&
1252 ctx->u.rep->pattern+3);
1268 DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, ctx->pattern);
1286 TRACE(("|%p|%p|MIN_UNTIL %d %p\n", ctx->pattern,
1287 ctx->ptr, ctx->count, ctx->u.rep->pattern));
1289 if (ctx->count < ctx->u.rep->pattern[1]) {
1293 ctx->u.rep->pattern+3);
1307 DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, ctx->pattern);
1318 if (ctx->count >= ctx->u.rep->pattern[2]
1319 && ctx->u.rep->pattern[2] != 65535)
1324 ctx->u.rep->pattern+3);
1335 TRACE(("|%p|%p|GROUPREF %d\n", ctx->pattern,
1336 ctx->ptr, ctx->pattern[0]));
1337 i = ctx->pattern[0];
1354 ctx->pattern++;
1359 TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", ctx->pattern,
1360 ctx->ptr, ctx->pattern[0]));
1361 i = ctx->pattern[0];
1379 ctx->pattern++;
1383 TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", ctx->pattern,
1384 ctx->ptr, ctx->pattern[0]));
1386 i = ctx->pattern[0];
1390 ctx->pattern += ctx->pattern[1];
1396 ctx->pattern += ctx->pattern[1];
1401 ctx->pattern += 2;
1406 /* <ASSERT> <skip> <back> <pattern> */
1407 TRACE(("|%p|%p|ASSERT %d\n", ctx->pattern,
1408 ctx->ptr, ctx->pattern[1]));
1409 state->ptr = ctx->ptr - ctx->pattern[1];
1412 DO_JUMP(JUMP_ASSERT, jump_assert, ctx->pattern+2);
1414 ctx->pattern += ctx->pattern[0];
1419 /* <ASSERT_NOT> <skip> <back> <pattern> */
1420 TRACE(("|%p|%p|ASSERT_NOT %d\n", ctx->pattern,
1421 ctx->ptr, ctx->pattern[1]));
1422 state->ptr = ctx->ptr - ctx->pattern[1];
1424 DO_JUMP(JUMP_ASSERT_NOT, jump_assert_not, ctx->pattern+2);
1430 ctx->pattern += ctx->pattern[0];
1435 TRACE(("|%p|%p|FAILURE\n", ctx->pattern, ctx->ptr));
1439 TRACE(("|%p|%p|UNKNOWN %d\n", ctx->pattern, ctx->ptr,
1440 ctx->pattern[-1]));
1455 TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", ctx->pattern, ctx->ptr));
1458 TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", ctx->pattern, ctx->ptr));
1461 TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", ctx->pattern, ctx->ptr));
1464 TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", ctx->pattern, ctx->ptr));
1467 TRACE(("|%p|%p|JUMP_BRANCH\n", ctx->pattern, ctx->ptr));
1470 TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", ctx->pattern, ctx->ptr));
1473 TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", ctx->pattern, ctx->ptr));
1476 TRACE(("|%p|%p|JUMP_REPEAT\n", ctx->pattern, ctx->ptr));
1479 TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", ctx->pattern, ctx->ptr));
1482 TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", ctx->pattern, ctx->ptr));
1485 TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", ctx->pattern, ctx->ptr));
1488 TRACE(("|%p|%p|JUMP_ASSERT\n", ctx->pattern, ctx->ptr));
1491 TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", ctx->pattern, ctx->ptr));
1494 TRACE(("|%p|%p|RETURN %d\n", ctx->pattern, ctx->ptr, ret));
1502 SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern)
1514 if (pattern[0] == SRE_OP_INFO) {
1518 flags = pattern[2];
1520 if (pattern[3] > 1) {
1523 end -= pattern[3]-1;
1529 /* pattern starts with a known prefix */
1531 prefix_len = pattern[5];
1532 prefix_skip = pattern[6];
1533 prefix = pattern + 7;
1536 /* pattern starts with a character from a known set */
1538 charset = pattern + 5;
1540 pattern += 1 + pattern[1];
1548 /* pattern starts with a known prefix. use the overlap
1562 TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr));
1567 status = SRE_MATCH(state, pattern + 2*prefix_skip);
1582 if (pattern[0] == SRE_OP_LITERAL) {
1583 /* pattern starts with a literal character. this is used
1585 SRE_CODE chr = pattern[1];
1592 TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr));
1597 status = SRE_MATCH(state, pattern + 2);
1602 /* pattern starts with a character from a known set */
1609 TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr));
1612 status = SRE_MATCH(state, pattern);
1620 TRACE(("|%p|%p|SEARCH\n", pattern, ptr));
1622 status = SRE_MATCH(state, pattern);
1753 state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string,
1794 if (pattern->flags & SRE_FLAG_LOCALE)
1796 else if (pattern->flags & SRE_FLAG_UNICODE)
1872 Py_XDECREF(self->pattern);
1887 static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
1926 static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
2155 pattern_finditer(PatternObject* pattern, PyObject* args)
2161 scanner = pattern_scanner(pattern, args);
2519 Py_XINCREF(self->pattern);
2527 PyErr_SetString(PyExc_TypeError, "cannot copy this pattern object");
2544 !deepcopy(&copy->pattern, memo)) {
2550 PyErr_SetString(PyExc_TypeError, "cannot deepcopy this pattern object");
2566 Split string by the occurrences of pattern.");
2570 Return a list of all non-overlapping matches of pattern in string.");
2575 RE pattern in string. For each match, the iterator returns a\n\
2581 occurrences of pattern in string by the replacement repl.");
2586 the leftmost non-overlapping occurrences of pattern with the\n\
2616 {"pattern", T_OBJECT, PAT_OFF(pattern), READONLY},
2659 /* "compile" pattern descriptor to pattern object */
2664 PyObject* pattern;
2670 if (!PyArg_ParseTuple(args, "OiO!|nOO", &pattern, &flags,
2681 self->pattern = NULL;
2704 Py_INCREF(pattern);
2705 self->pattern = pattern;
3203 Py_DECREF(self->pattern);
3242 if (self->pattern->groupindex) {
3243 index = PyObject_GetItem(self->pattern->groupindex, index);
3267 PyTuple_Pack(3, self->pattern, self, ptemplate)
3347 if (!result || !self->pattern->groupindex)
3350 keys = PyMapping_Keys(self->pattern->groupindex);
3511 slots = 2 * (self->pattern->groups+1);
3521 Py_XINCREF(self->pattern);
3545 if (!deepcopy((PyObject**) &copy->pattern, memo) ||
3583 if (self->pattern->indexgroup && self->lastindex >= 0) {
3585 self->pattern->indexgroup, self->lastindex
3615 {"re", T_OBJECT, MATCH_OFF(pattern), READONLY},
3658 pattern_new_match(PatternObject* pattern, SRE_STATE* state, int status)
3672 2*(pattern->groups+1));
3676 Py_INCREF(pattern);
3677 match->pattern = pattern;
3683 match->groups = pattern->groups+1;
3693 for (i = j = 0; i < pattern->groups; i++, j+=2)
3728 Py_XDECREF(self->pattern);
3744 status = sre_match(state, PatternObject_GetCode(self->pattern));
3747 status = sre_umatch(state, PatternObject_GetCode(self->pattern));
3753 match = pattern_new_match((PatternObject*) self->pattern,
3777 status = sre_search(state, PatternObject_GetCode(self->pattern));
3780 status = sre_usearch(state, PatternObject_GetCode(self->pattern));
3786 match = pattern_new_match((PatternObject*) self->pattern,
3805 {"pattern", T_OBJECT, SCAN_OFF(pattern), READONLY},
3842 pattern_scanner(PatternObject* pattern, PyObject* args)
3858 self->pattern = NULL;
3860 string = state_init(&self->state, pattern, string, start, end);
3866 Py_INCREF(pattern);
3867 self->pattern = (PyObject*) pattern;