全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1081 1
2016-02-20
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'
请问,根据上面的程序,我怎么不明白到底是怎么回事呢?
有人能通俗一点的讲讲吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-8-28 17:19:42
当我们使用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'
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群