bool OptimizedRegularExpressionImpl<thread_safe>::match(const char * subject, size_t subject_size, Match & match) const { if (is_trivial) { const char * pos; if (is_case_insensitive) pos = strcasestr(subject, required_substring.data()); else pos = strstr(subject, required_substring.data()); if (pos == nullptr) return 0; else { match.offset = pos - subject; match.length = required_substring.size(); return 1; } } else { if (!required_substring.empty()) { const char * pos; if (is_case_insensitive) pos = strcasestr(subject, required_substring.data()); else pos = strstr(subject, required_substring.data()); if (nullptr == pos) return 0; } StringPieceType piece; if (!RegexType::PartialMatch(StringPieceType(subject, subject_size), *re2, &piece)) return 0; else { match.offset = piece.data() - subject; match.length = piece.length(); return 1; } } }
BasicSplitIterator(StringPieceType const &v, CharType split_) : head(v.data()), tail(v.data()), last(v.data() + v.size()), split(split_) { Init(v.size()); }