Lines Matching refs:pattern

520 LOCAL(Py_ssize_t) SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern);
523 SRE_COUNT(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
534 switch (pattern[0]) {
538 TRACE(("|%p|%p|COUNT IN\n", pattern, ptr));
539 while (ptr < end && SRE_CHARSET(pattern + 2, *ptr))
545 TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr));
553 TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr));
559 chr = pattern[1];
560 TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr));
567 chr = pattern[1];
568 TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr));
575 chr = pattern[1];
576 TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr));
583 chr = pattern[1];
584 TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr));
590 /* repeated single character pattern */
591 TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr));
593 i = SRE_MATCH(state, pattern);
599 TRACE(("|%p|%p|COUNT %d\n", pattern, ptr,
604 TRACE(("|%p|%p|COUNT %d\n", pattern, ptr, ptr - (SRE_CHAR*) state->ptr));
610 SRE_INFO(SRE_STATE* state, SRE_CODE* pattern)
621 if (pattern[3] && (end - ptr) < pattern[3])
625 if (pattern[2] & SRE_INFO_PREFIX && pattern[5] > 1) {
627 for (i = 0; i < pattern[5]; i++)
628 if ((SRE_CODE) ptr[i] != pattern[7 + i])
630 return pattern[0] + 2 * pattern[6];
632 return pattern[0];
787 nextctx->pattern = nextpattern; \
798 SRE_CODE* pattern;
808 /* check if string matches the given pattern. returns <0 for
811 SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
822 TRACE(("|%p|%p|ENTER\n", pattern, state->ptr));
827 ctx->pattern = pattern;
834 if (ctx->pattern[0] == SRE_OP_INFO) {
837 if (ctx->pattern[3] && (end - ctx->ptr) < ctx->pattern[3]) {
839 (end - ctx->ptr), ctx->pattern[3]));
842 ctx->pattern += ctx->pattern[1] + 1;
850 switch (*ctx->pattern++) {
855 TRACE(("|%p|%p|MARK %d\n", ctx->pattern,
856 ctx->ptr, ctx->pattern[0]));
857 i = ctx->pattern[0];
871 ctx->pattern++;
877 TRACE(("|%p|%p|LITERAL %d\n", ctx->pattern,
878 ctx->ptr, *ctx->pattern));
879 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] != ctx->pattern[0])
881 ctx->pattern++;
888 TRACE(("|%p|%p|NOT_LITERAL %d\n", ctx->pattern,
889 ctx->ptr, *ctx->pattern));
890 if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] == ctx->pattern[0])
892 ctx->pattern++;
897 /* end of pattern */
898 TRACE(("|%p|%p|SUCCESS\n", ctx->pattern, ctx->ptr));
905 TRACE(("|%p|%p|AT %d\n", ctx->pattern, ctx->ptr, *ctx->pattern));
906 if (!SRE_AT(state, ctx->ptr, *ctx->pattern))
908 ctx->pattern++;
914 TRACE(("|%p|%p|CATEGORY %d\n", ctx->pattern,
915 ctx->ptr, *ctx->pattern));
916 if (ctx->ptr >= end || !sre_category(ctx->pattern[0], ctx->ptr[0]))
918 ctx->pattern++;
925 TRACE(("|%p|%p|ANY\n", ctx->pattern, ctx->ptr));
934 TRACE(("|%p|%p|ANY_ALL\n", ctx->pattern, ctx->ptr));
943 TRACE(("|%p|%p|IN\n", ctx->pattern, ctx->ptr));
944 if (ctx->ptr >= end || !SRE_CHARSET(ctx->pattern + 1, *ctx->ptr))
946 ctx->pattern += ctx->pattern[0];
952 ctx->pattern, ctx->ptr, ctx->pattern[0]));
954 state->lower(*ctx->ptr) != state->lower(*ctx->pattern))
956 ctx->pattern++;
962 ctx->pattern, ctx->ptr, *ctx->pattern));
964 state->lower(*ctx->ptr) == state->lower(*ctx->pattern))
966 ctx->pattern++;
971 TRACE(("|%p|%p|IN_IGNORE\n", ctx->pattern, ctx->ptr));
973 || !SRE_CHARSET(ctx->pattern+1,
976 ctx->pattern += ctx->pattern[0];
984 TRACE(("|%p|%p|JUMP %d\n", ctx->pattern,
985 ctx->ptr, ctx->pattern[0]));
986 ctx->pattern += ctx->pattern[0];
992 TRACE(("|%p|%p|BRANCH\n", ctx->pattern, ctx->ptr));
997 for (; ctx->pattern[0]; ctx->pattern += ctx->pattern[0]) {
998 if (ctx->pattern[1] == SRE_OP_LITERAL &&
1000 (SRE_CODE) *ctx->ptr != ctx->pattern[2]))
1002 if (ctx->pattern[1] == SRE_OP_IN &&
1004 !SRE_CHARSET(ctx->pattern + 3, (SRE_CODE) *ctx->ptr)))
1007 DO_JUMP(JUMP_BRANCH, jump_branch, ctx->pattern+1);
1032 TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
1033 ctx->pattern[1], ctx->pattern[2]));
1035 if (ctx->ptr + ctx->pattern[1] > end)
1040 ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[2]);
1048 string. check if the rest of the pattern matches,
1051 if (ctx->count < (Py_ssize_t) ctx->pattern[1])
1054 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
1062 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_LITERAL) {
1064 the rest of the pattern cannot possibly match */
1065 ctx->u.chr = ctx->pattern[ctx->pattern[0]+1];
1067 while (ctx->count >= (Py_ssize_t) ctx->pattern[1] &&
1072 if (ctx->count < (Py_ssize_t) ctx->pattern[1])
1076 ctx->pattern+ctx->pattern[0]);
1090 while (ctx->count >= (Py_ssize_t) ctx->pattern[1]) {
1093 ctx->pattern+ctx->pattern[0]);
1115 TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
1116 ctx->pattern[1], ctx->pattern[2]));
1118 if (ctx->ptr + ctx->pattern[1] > end)
1123 if (ctx->pattern[1] == 0)
1126 /* count using pattern min as the maximum */
1127 ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[1]);
1130 if (ret < (Py_ssize_t) ctx->pattern[1])
1138 if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
1146 while ((Py_ssize_t)ctx->pattern[2] == 65535
1147 || ctx->count <= (Py_ssize_t)ctx->pattern[2]) {
1150 ctx->pattern+ctx->pattern[0]);
1156 ret = SRE_COUNT(state, ctx->pattern+3, 1);
1173 TRACE(("|%p|%p|REPEAT %d %d\n", ctx->pattern, ctx->ptr,
1174 ctx->pattern[1], ctx->pattern[2]));
1183 ctx->u.rep->pattern = ctx->pattern;
1189 DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]);
1214 TRACE(("|%p|%p|MAX_UNTIL %d\n", ctx->pattern,
1217 if (ctx->count < ctx->u.rep->pattern[1]) {
1221 ctx->u.rep->pattern+3);
1231 if ((ctx->count < ctx->u.rep->pattern[2] ||
1232 ctx->u.rep->pattern[2] == 65535) &&
1243 ctx->u.rep->pattern+3);
1259 DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, ctx->pattern);
1277 TRACE(("|%p|%p|MIN_UNTIL %d %p\n", ctx->pattern,
1278 ctx->ptr, ctx->count, ctx->u.rep->pattern));
1280 if (ctx->count < ctx->u.rep->pattern[1]) {
1284 ctx->u.rep->pattern+3);
1298 DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, ctx->pattern);
1309 if (ctx->count >= ctx->u.rep->pattern[2]
1310 && ctx->u.rep->pattern[2] != 65535)
1315 ctx->u.rep->pattern+3);
1326 TRACE(("|%p|%p|GROUPREF %d\n", ctx->pattern,
1327 ctx->ptr, ctx->pattern[0]));
1328 i = ctx->pattern[0];
1345 ctx->pattern++;
1350 TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", ctx->pattern,
1351 ctx->ptr, ctx->pattern[0]));
1352 i = ctx->pattern[0];
1370 ctx->pattern++;
1374 TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", ctx->pattern,
1375 ctx->ptr, ctx->pattern[0]));
1377 i = ctx->pattern[0];
1381 ctx->pattern += ctx->pattern[1];
1387 ctx->pattern += ctx->pattern[1];
1392 ctx->pattern += 2;
1397 /* <ASSERT> <skip> <back> <pattern> */
1398 TRACE(("|%p|%p|ASSERT %d\n", ctx->pattern,
1399 ctx->ptr, ctx->pattern[1]));
1400 state->ptr = ctx->ptr - ctx->pattern[1];
1403 DO_JUMP(JUMP_ASSERT, jump_assert, ctx->pattern+2);
1405 ctx->pattern += ctx->pattern[0];
1410 /* <ASSERT_NOT> <skip> <back> <pattern> */
1411 TRACE(("|%p|%p|ASSERT_NOT %d\n", ctx->pattern,
1412 ctx->ptr, ctx->pattern[1]));
1413 state->ptr = ctx->ptr - ctx->pattern[1];
1415 DO_JUMP(JUMP_ASSERT_NOT, jump_assert_not, ctx->pattern+2);
1421 ctx->pattern += ctx->pattern[0];
1426 TRACE(("|%p|%p|FAILURE\n", ctx->pattern, ctx->ptr));
1430 TRACE(("|%p|%p|UNKNOWN %d\n", ctx->pattern, ctx->ptr,
1431 ctx->pattern[-1]));
1446 TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", ctx->pattern, ctx->ptr));
1449 TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", ctx->pattern, ctx->ptr));
1452 TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", ctx->pattern, ctx->ptr));
1455 TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", ctx->pattern, ctx->ptr));
1458 TRACE(("|%p|%p|JUMP_BRANCH\n", ctx->pattern, ctx->ptr));
1461 TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", ctx->pattern, ctx->ptr));
1464 TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", ctx->pattern, ctx->ptr));
1467 TRACE(("|%p|%p|JUMP_REPEAT\n", ctx->pattern, ctx->ptr));
1470 TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", ctx->pattern, ctx->ptr));
1473 TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", ctx->pattern, ctx->ptr));
1476 TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", ctx->pattern, ctx->ptr));
1479 TRACE(("|%p|%p|JUMP_ASSERT\n", ctx->pattern, ctx->ptr));
1482 TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", ctx->pattern, ctx->ptr));
1485 TRACE(("|%p|%p|RETURN %d\n", ctx->pattern, ctx->ptr, ret));
1493 SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern)
1505 if (pattern[0] == SRE_OP_INFO) {
1509 flags = pattern[2];
1511 if (pattern[3] > 1) {
1514 end -= pattern[3]-1;
1520 /* pattern starts with a known prefix */
1522 prefix_len = pattern[5];
1523 prefix_skip = pattern[6];
1524 prefix = pattern + 7;
1527 /* pattern starts with a character from a known set */
1529 charset = pattern + 5;
1531 pattern += 1 + pattern[1];
1539 /* pattern starts with a known prefix. use the overlap
1553 TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr));
1558 status = SRE_MATCH(state, pattern + 2*prefix_skip);
1573 if (pattern[0] == SRE_OP_LITERAL) {
1574 /* pattern starts with a literal character. this is used
1576 SRE_CODE chr = pattern[1];
1583 TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr));
1588 status = SRE_MATCH(state, pattern + 2);
1593 /* pattern starts with a character from a known set */
1600 TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr));
1603 status = SRE_MATCH(state, pattern);
1611 TRACE(("|%p|%p|SEARCH\n", pattern, ptr));
1613 status = SRE_MATCH(state, pattern);
1744 state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string,
1785 if (pattern->flags & SRE_FLAG_LOCALE)
1787 else if (pattern->flags & SRE_FLAG_UNICODE)
1863 Py_XDECREF(self->pattern);
1878 static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
1917 static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
2146 pattern_finditer(PatternObject* pattern, PyObject* args)
2152 scanner = pattern_scanner(pattern, args);
2510 Py_XINCREF(self->pattern);
2518 PyErr_SetString(PyExc_TypeError, "cannot copy this pattern object");
2535 !deepcopy(&copy->pattern, memo)) {
2541 PyErr_SetString(PyExc_TypeError, "cannot deepcopy this pattern object");
2557 Split string by the occurrences of pattern.");
2561 Return a list of all non-overlapping matches of pattern in string.");
2566 RE pattern in string. For each match, the iterator returns a\n\
2572 occurrences of pattern in string by the replacement repl.");
2577 the leftmost non-overlapping occurrences of pattern with the\n\
2618 if (!strcmp(name, "pattern")) {
2619 Py_INCREF(self->pattern);
2620 return self->pattern;
2670 /* "compile" pattern descriptor to pattern object */
2675 PyObject* pattern;
2681 if (!PyArg_ParseTuple(args, "OiO!|nOO", &pattern, &flags,
2692 self->pattern = NULL;
2715 Py_INCREF(pattern);
2716 self->pattern = pattern;
3214 Py_DECREF(self->pattern);
3253 if (self->pattern->groupindex) {
3254 index = PyObject_GetItem(self->pattern->groupindex, index);
3278 PyTuple_Pack(3, self->pattern, self, ptemplate)
3358 if (!result || !self->pattern->groupindex)
3361 keys = PyMapping_Keys(self->pattern->groupindex);
3522 slots = 2 * (self->pattern->groups+1);
3532 Py_XINCREF(self->pattern);
3556 if (!deepcopy((PyObject**) &copy->pattern, memo) ||
3601 if (self->pattern->indexgroup && self->lastindex >= 0) {
3603 self->pattern->indexgroup, self->lastindex
3632 Py_INCREF(self->pattern);
3633 return (PyObject*) self->pattern;
3659 pattern_new_match(PatternObject* pattern, SRE_STATE* state, int status)
3673 2*(pattern->groups+1));
3677 Py_INCREF(pattern);
3678 match->pattern = pattern;
3684 match->groups = pattern->groups+1;
3694 for (i = j = 0; i < pattern->groups; i++, j+=2)
3729 Py_XDECREF(self->pattern);
3745 status = sre_match(state, PatternObject_GetCode(self->pattern));
3748 status = sre_umatch(state, PatternObject_GetCode(self->pattern));
3754 match = pattern_new_match((PatternObject*) self->pattern,
3778 status = sre_search(state, PatternObject_GetCode(self->pattern));
3781 status = sre_usearch(state, PatternObject_GetCode(self->pattern));
3787 match = pattern_new_match((PatternObject*) self->pattern,
3816 if (!strcmp(name, "pattern")) {
3817 Py_INCREF(self->pattern);
3818 return self->pattern;
3835 pattern_scanner(PatternObject* pattern, PyObject* args)
3851 self->pattern = NULL;
3853 string = state_init(&self->state, pattern, string, start, end);
3859 Py_INCREF(pattern);
3860 self->pattern = (PyObject*) pattern;