2014-10-19 2 views
0

Мне нужно обработать пользовательский ввод как строку с помощью Matlab. Я точно знаю, как может отображаться допустимая строка, но я не знаю, как использовать регулярные выражения для проверки допустимых строк. Я хотел бы вернуть true для правильных входных строк и false в противном случае.Matlab соответствует строке с регулярным выражением

Допустимые входы начать с буквы s или b с последующим пробелом, а затем содержать число от 1 до 20. Примеры для действительных строк следующим образом:

's 14' 
'b 7' 
'b 20' 

Примеры для недействительных строк следующим образом:

's 24' % number too large 
's14' % missing space 
'x 13' % wrong letter 
'b 111' % number too large/also 3 digits for the number, where only 1 to 2 are allowed. 

Я начал с этой строки кода, который, кажется, близки к решению, но не совсем:

regexp('s 26', '[sb] [1-20]', 'match') 

Не получается, так как он видит s 2 как положительное, но на самом деле вход s 26 недействителен.

ответ

3
^(?:s|b)\s(?:[1-9]|1[0-9]|20)$ 

попробуйте это. Читайте демо.

http://regex101.com/r/wQ1oW3/14

+0

Спасибо, кажется, сработало. Можете ли вы объяснить свои мысли по этому поводу? – Nras

+0

Это: [1-9] | 1 [0-9] | 20: любой из 1-9 ИЛИ фиксированный 1, объединенный с любым 1-9 ИЛИ 20? – Nras

+1

'(?: S | b)' == '[sb]' –

Смежные вопросы