Function template skip
boost::xpressive::skip — Specify which characters to skip when matching a regex.
Synopsis
template<typename Skip> unspecified skip(Skip const & skip);
Description
skip()
предписывает движку regex пропустить определенные символы при сопоставлении regex. Это наиболее полезно для написания регекса, которые игнорируют белое пространство. Например, следующий указывает регекс, который пропускает белое пространство и пунктуацию:
sregex word = +alpha;
sregex sentence = skip(set[_s | punct])( +word );
То, как он работает в приведенном выше примере, состоит в том, чтобы вставить keep(*set [_s | punct])
перед каждым примитивным внутри regex. «примитив» включает в себя такие терминалы, как струны, наборы символов и вложенные regexes. Окончательный *set [_s | punct]
добавляется к концу regex. Регекс sentence
, указанный выше, эквивалентен следующему:
sregex sentence = +( keep(*set[_s | punct]) >> word )
>> *set[_s | punct];
![[Note]](/img/note.png) |
Note |
Скиппинг не влияет на то, как вложенные regexs обрабатываются, потому что они обрабатываются атомно. Стринговые литералы также обрабатываются атомарно; то есть ни один пропуск не делается в строковом литерале. Так что skip(_s)("This that") не то же самое, что skip(_s)("This" >> as_xpr(" that") . Первый будет соответствовать только тогда, когда есть только одно пространство между "это" и "это". Второй пропустит любое и все белое пространство между "это" и "это". |
Параметры: |
скип |
Регекс, который указывает, какие символы пропустить. |
|