#include <boost/regex.hpp>
Регулярные выражения отличаются от многих простых алгоритмов сопоставления шаблонов тем, что, а также нахождение общего соответствия они также могут производить подэкспрессионные совпадения: каждое подэкспрессия ограничивается в шаблоне парой скобок (...). Должен быть какой-то метод отчетности о подэкспрессионных матчах пользователю: это достигается путем определения класса<match_results>, который действует как индексированный набор подэкспрессионных матчей, причем каждый подэкспрессионный матч содержится в объекте типа.<sub_match>.
Объекты типа<sub_match>могут быть получены только путем подписки объекта типа.<match_results>.
Объекты типа<sub_match>можно сравнить с объектами типа<std::basic_string>, или<constcharT*>, или<const
charT>.
Объекты типа<sub_match>могут быть добавлены к объектам типа<std::basic_string>или<constcharT*>или<const
charT>для получения нового<std::basic_string>объекта.
Когда обозначенное подвыражение обозначается объектом типа<sub_match>участвовал в матче регулярного выражения, затем член, соответствующий, оцениваетистинно, а членысначалаивторойобозначают диапазон символов [первый, второй], которые сформировали этот матч. В противном случаеявляетсяложным, и членыпервогоивторогосодержат неопределенные значения.
Когда обозначенное подвыражение, обозначаемое объектом типа<sub_match>, повторялось, то объект<sub_match>представляет собой совпадение, полученное последнимповтором. Полный набор всех захватов, полученных для всех повторов, может быть доступен через функцию захвата (примечание: это имеет серьезные последствия для производительности, вы должны явно включить эту функцию).
Если объект типа<sub_match>представляет подвыражение 0 — то есть весь матч — то член, совпадающий, всегдаистинный, если толькочастичное совпадениене было получено в результате передачи флага<match_partial>алгоритму регулярного выражения, и в этом случае член, совпадающий, являетсяложным, а членысначалаивторойпредставляют диапазон символов, которые сформировали частичное совпадение.
namespace boost{
template <class BidirectionalIterator>
class sub_match;
typedef sub_match<const char*> csub_match;
typedef sub_match<const wchar_t*> wcsub_match;
typedef sub_match<std::string::const_iterator> ssub_match;
typedef sub_match<std::wstring::const_iterator> wssub_match;
template <class BidirectionalIterator>
class sub_match : public std::pair<BidirectionalIterator, BidirectionalIterator>
{
public:
typedef typename iterator_traits<BidirectionalIterator>::value_type value_type;
typedef typename iterator_traits<BidirectionalIterator>::difference_type difference_type;
typedef BidirectionalIterator iterator;
bool matched;
difference_type length()const;
operator basic_string<value_type>()const;
basic_string<value_type> str()const;
int compare(const sub_match& s)const;
int compare(const basic_string<value_type>& s)const;
int compare(const value_type* s)const;
#ifdef BOOST_REGEX_MATCH_EXTRA
typedef implementation-private capture_sequence_type;
const capture_sequence_type& captures()const;
#endif
};
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const sub_match<BidirectionalIterator>& m,
const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const* s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const * s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const& s,
const sub_match<BidirectionalIterator>& m);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const& s);
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m1,
const sub_match<BidirectionalIterator>& m2);
template <class charT, class traits, class BidirectionalIterator>
basic_ostream<charT, traits>&
operator << (basic_ostream<charT, traits>& os,
const sub_match<BidirectionalIterator>& m);
}
typedef typename std::iterator_traits<iterator>::value_type value_type;
Тип, на который указывают итераторы.
typedef typename std::iterator_traits<iterator>::difference_type difference_type;
Тип, который представляет собой разницу между двумя итераторами.
typedef BidirectionalIterator iterator;
Тип итератора.
iterator first
Итератор, обозначающий позицию начала матча.
iterator second
Итератор, обозначающий позицию конца матча.
bool matched
Булево значение, обозначающее, участвовало ли это подвыражение в матче.
static difference_type length();
Эффекты: Возвращает длину этого сопоставленного подвыражения, или 0, если это подвыражение не было сопоставлено:<matched?distance(first,second):0)>.
operator basic_string<value_type>()const;
Эффекты: преобразует<*this>в строку: возвращает<(matched?basic_string<value_type>(first,second):basic_string<value_type>())>.
basic_string<value_type> str()const;
Эффекты: В этом случае он возвращает строку<*this>:<(matched
?basic_string<value_type>(first,second):basic_string<value_type>())>.
int compare(const sub_match& s)const;
Эффекты: выполняет лексическое сравнение сs: возвращается<str().compare(s.str())>.
int compare(const basic_string<value_type>& s)const;
Эффекты: сравнивает<*this>со строкойs: возвращается<str().compare(s)>.
int compare(const value_type* s)const;
Эффекты: сравнивает<*this>с нулевой струнойs: возвращается<str().compare(s)>.
typedef implementation-private capture_sequence_type;
Определяет тип реализации, который удовлетворяет требованиям стандартной библиотечной последовательности (21.1.1, включая дополнительные операции Таблицы 68), значение_тип которой равно<sub_match<BidirectionalIterator>>. Этот тип<std::vector<sub_match<BidirectionalIterator>>>, но вы не должны полагаться на это.
const capture_sequence_type& captures()const;
Эффекты: возвращает последовательность, содержащую все захваты, полученные для этого подвыражения.
Предпосылки: библиотека должна быть построена и использована с определением BOOST_REGEX_MATCH_EXTRA, и вы должны передать флаг<match_extra>функциям соответствия регексу<regex_match>,<regex_search>,<regex_iterator>или<regex_token_iterator>, чтобы определить эту функцию члена и вернуть полезную информацию.
Обоснование: Включение этой функции имеет несколько последствий:
- sub_match занимает больше памяти, что приводит к тому, что сложные выражения заканчиваются из памяти или пространства стека быстрее во время сопоставления.
- Алгоритмы сопоставления менее эффективны при обработке некоторых функций (например, независимых подвыражений), даже если match_extra не используется.
- Алгоритмы сопоставления гораздо менее эффективны (то есть медленнее), когда используется match_extra. В основном это связано с дополнительными выделениями памяти, которые должны иметь место.
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs.compare(rhs)
==0>.
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs.compare(rhs)
!=0>.
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs.compare(rhs)
<0>.
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs.compare(rhs)
<=0>.
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs.compare(rhs)
>=0>.
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs.compare(rhs)
>0>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
==rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
!=rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
<rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>=rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs
<=rhs.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возвраты<lhs.str()
==rhs>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возврат<lhs.str()
!=rhs>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возвраты<lhs.str()
<rhs>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возврат<lhs.str()
>rhs>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возврат<lhs.str()
>=rhs>.
template <class BidirectionalIterator, class traits, class Allocator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& rhs);
Эффекты: возврат<lhs.str()
<=rhs>.
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
==rhs.str()>.
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
!=rhs.str()>.
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
<rhs.str()>.
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>rhs.str()>.
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>=rhs.str()>.
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs
<=rhs.str()>.
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возвраты<lhs.str()
==rhs>.
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возврат<lhs.str()
!=rhs>.
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возвраты<lhs.str()
<rhs>.
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возврат<lhs.str()
>rhs>.
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возврат<lhs.str()
>=rhs>.
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
Эффекты: возврат<lhs.str()
<=rhs>.
template <class BidirectionalIterator>
bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
==rhs.str()>.
template <class BidirectionalIterator>
bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
!=rhs.str()>.
template <class BidirectionalIterator>
bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
<rhs.str()>.
template <class BidirectionalIterator>
bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>rhs.str()>.
template <class BidirectionalIterator>
bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возврат<lhs
>=rhs.str()>.
template <class BidirectionalIterator>
bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
const sub_match<BidirectionalIterator>& rhs);
Эффекты: возвраты<lhs
<=rhs.str()>.
template <class BidirectionalIterator>
bool operator == (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возвраты<lhs.str()
==rhs>.
template <class BidirectionalIterator>
bool operator != (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возврат<lhs.str()
!=rhs>.
template <class BidirectionalIterator>
bool operator < (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возвраты<lhs.str()
<rhs>.
template <class BidirectionalIterator>
bool operator > (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возврат<lhs.str()
>rhs>.
template <class BidirectionalIterator>
bool operator >= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возврат<lhs.str()
>=rhs>.
template <class BidirectionalIterator>
bool operator <= (const sub_match<BidirectionalIterator>& lhs,
typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
Эффекты: возврат<lhs.str()
<=rhs>.
Операторы сложения для<sub_match>позволяют добавлять<sub_match>к любому типу, к которому можно добавить<std::string>и получить в результате новую строку.
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s,
const sub_match<BidirectionalIterator>& m);
Эффекты: возвраты<s
+m.str()>.
template <class BidirectionalIterator, class traits, class Allocator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
operator + (const sub_match<BidirectionalIterator>& m,
const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
traits,
Allocator>& s);
Эффекты: возвраты<m.str()
+s>.
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const* s,
const sub_match<BidirectionalIterator>& m);
Эффекты: возвраты<s
+m.str()>.
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const * s);
Эффекты: возвраты<m.str()
+s>.
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (typename iterator_traits<BidirectionalIterator>::value_type const& s,
const sub_match<BidirectionalIterator>& m);
Эффекты: возвраты<s
+m.str()>.
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m,
typename iterator_traits<BidirectionalIterator>::value_type const& s);
Эффекты: возвраты<m.str()
+s>.
template <class BidirectionalIterator>
std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
operator + (const sub_match<BidirectionalIterator>& m1,
const sub_match<BidirectionalIterator>& m2);
Эффекты: возвраты<m1.str()
+m2.str()>.
template <class charT, class traits, class BidirectionalIterator>
basic_ostream<charT, traits>&
operator << (basic_ostream<charT, traits>& os
const sub_match<BidirectionalIterator>& m);
Эффекты: возврат<(os<<m.str())>.