Вот документация Posix по Основные регулярные выражения . В частности, примечание:
Когда за BRE, соответствующим одному символу, подвыражению или обратной ссылке, следует интервальное выражение в формате \{m\}
, \{m,\}
или \{m,n\}
, вместе с этим интервальным выражением оно должно соответствоватьповторяющиеся последовательные вхождения BRE будут соответствовать ...
Так что [[:blank:]]{1,}
не будет делать то, что вы думаете;скобки должны начинаться с обратной косой черты.
С другой стороны, большинство реализаций BRE позволяют использовать \+
для обозначения «одного или нескольких повторений». По крайней мере, сорта BSD и Gnu. Таким образом, вы вполне могли бы написать это как [[:blank:]]\+
вместо использования числового оператора повторения [[:blank:]]\{1,\}
.
Наконец, [[:blank:]]
может оказаться не тем, что вы хотите. По крайней мере, он не совпадает с тем же, что и \s
. [[:blank:]]
соответствует только пробелам и символам табуляции ([ \t]
). Но в большинстве библиотек регулярных выражений \s
совпадает с [ \t\r\n\f\v]
, что соответствует [[:space:]]
в регулярном выражении C (или функции isspace()
в коде C). Наиболее заметная разница между [[:blank:]]
и \s
(или [[:space:]]
) заключается в том, что [[:blank:]]
не соответствует переводу строки. Возможно, это нормально в вашем приложении.
Примечание по педантике: Некоторые библиотеки регулярных выражений определяют \s
как [ \t\r\n\f]
, но вы вряд ли заметите разницу. И все эти списки символов предполагают, что регулярное выражение было скомпилировано в локали "C". Если библиотека регулярных выражений ориентирована на локали, а некоторые другие локали включены, дополнительные символы могут совпадать.