Я знаю, что функцию Matlab regexp
я должен использовать для поиска соответствия между строкой и регулярным выражением.
Однако, когда пустая строка соответствует регулярному выражению, она показывает тот же результат, что и когда она не соответствует:
expr1 = 'b'
regexp('a', expr1, 'match') % Returns empty cell: no match
regexp('b', expr1, 'match') % Returns cell with 'b'
regexp('', expr1, 'match') % Returns empty cell: no match
expr2 = ''
regexp('a', expr2, 'match') % Returns empty cell: no match
regexp('', expr2, 'match') % Returns empty cell: but it matches
expr3 = 'b?'
regexp('a', expr3, 'match') % Returns empty cell: no match
regexp('b', expr3, 'match') % Returns cell with 'b'
regexp('', expr3, 'match') % Returns empty cell: but it matches
expr4 = '|b'
regexp('a', expr4, 'match') % Returns empty cell: no match
regexp('b', expr4, 'match') % Returns cell with 'b'
regexp('', expr4, 'match') % Returns empty cell: but it matches
expr5 = '.*'
regexp('b', expr5, 'match') % Returns cell with 'b'
regexp('', expr5, 'match') % Returns empty cell: but it matches
Когда результатом является пустая ячейка, я не могу провести различие между «нет совпадения между строкой и регулярным выражением» и «соответствует строка, но это просто пустая строка».
Как я могу различить эти два случая?
Другим способом сделать то, что я хочу, было бы наличие функции, которая проверяет, совпадает ли (возможно, пустая) строка (не ее подстроки) с регулярным выражением, но я не смог найти ее в Matlab.
РЕДАКТИРОВАТЬ : я работаю с Matlab2015a, и я попытался заменить ''
на blanks(0)
, но это дает те же результаты.