当我们使用expr*时,matlab将尽可能的匹配最长的字符子串。如:
str = '<tr valign=top><td><a name="19184"></a>xyz';
regexp(hstr, '<.*>', 'match')
ans =
'<tr valign=top><td><a name="19184"></a>'
如果我们希望匹配尽可能短的字符子串时,可以在上面我们使用的字符串后使用'?',也就是expr*?,如:
str = '<tr valign=top><td><a name="19184"></a>xyz';
regexp(hstr, '<.*?>', 'match')
ans =
'<tr valign=top>' '<td>' '<a name="19184">' '</a>'
还有一种是expr*+ ,这种表达式的用法很诡异,没弄懂在什么地方有用。如果哪位大侠有高见,望不吝赐教!
这个表达式的执行过程是这样的,先执行expr*,“游标”(如果有的话)就指到了与expr*匹配的字符子串的最末端,然后从那里开始再检查下一个字符与后面的表达式是否匹配,如果匹配就继续向前(如果一直成功则返回最长的字符串),如果不匹配则直接返回空。例如:
str = '<tr valign=top><td><a name="19184"></a>xyz';
regexp(hstr, '<.*+>', 'match')
ans =
{}
regexp(hstr, '<.*+', 'match')
ans =
'<tr valign=top><td><a name="19184"></a>xyz'
|