Использование typedef
избавляет от необходимости писать struct
каждый раз, когда вы объявляете переменную этого типа:
struct elem
{
int i;
char k;
};
elem user; // compile error!
struct elem user; // this is correct
Поскольку вы спросили «как», я постараюсь объяснить шаг за шагом. Поскольку вы не указали, какой вариант регулярного выражения вы используете, я приведу примеры в PCRE и двух вариантах регулярного выражения POSIX .
Для простых случаев таким образом, вы должны думать о регулярном выражении как об автоматизации, принимая по одному символу за раз и говоря, когда он действителен (принятие символа) или нет. И после каждого символа вы можете указать кванторы, сколько раз он может появляться, например (на диалекте PCRE) *
(ноль или более раз), +
(один или несколько раз) или {
n ,
m }
(от n до m раз). Тогда процесс построения становится простым:
PRCE | B.POSIX | E.POSIX | Comments
------+---------+-----------+--------------------------------------------------
^ | ^ | ^ | Unless you are going to accept anything with 10
| | | digits in it, you need to match start of data;
\d | [0-9] | [:digit:] | You need to match digits;
{1,10}| \{1,10\}| {1,10} | You have to specify there is from 1 to 10 of them.
| | | If you also wish to accept empty string — use 0;
$ | $ | $ | Then, data should end (unless see above).
Итак, результат: ^ \ d {1,10} $
, ^ [0-9] \ {1,10} \ $
или ^ [: digit:] {1,10} $
соответственно.
^\d{1,9}$
Это будет соответствовать любой цифре от 1 до 9.
Поскольку вы не указали вариант регулярного выражения, с которым работаете, это должно привести вас туда, где вам нужно. Если нет, сообщите нам, какую технологию регулярных выражений вы используете.
/ \ D \ d {0,10} \ D /
(при условии, что "меньше" включает 0)
/ \ D \ d {1,10} \ D /
(если вы хотите от 1 до 10 цифр)
Это найдет хотя бы одну и не более 9 цифр подряд:
\ d {1,9}
для «менее 10» и как минимум 1, если это единственное значение ...
^\d{1,9}$
но я бы предложил разделить проблемы здесь, просто проверьте, составляет ли длина строки <= 10 символов после ввода, для этого не требуется регулярное выражение.