解析HTML正则

 

如例:

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

想要看懂正则表达式,最好的办法是一步一步解析:

1)、先从'[\s\S]*'为分界点,前面的内容可以划分为'<\s*(\S+)(\s[^>]*)?>'。
    '\s'表示匹配任何空白字符,包括空格、制表符、换页符等等,等价于'[\f\n\r\t\v]'。
    '*'表示匹配前面的子表达式(也就是'\s')0次或多次。
    '(\S+)'表示一个分组,'\S'表示匹配任何非空白字符,'+'表示匹配前面的子表达式(也就是'\S')1次或多次。
    '(\s[^>]*)'表示一个分组,'\s'表示匹配任何空白字符,包括空格、制表符、换页符等等,等价于'[\f\n\r\t\v]','[^>]'是一个中括号表达式,'^'表示查找不属于范围内的字符,'^>'就表示匹配除'>'之外的字符,'*'表示匹配除'>'以外的前面的子表达式('\s')0次或多次。
    ?表示匹配前面的子表达式'(\S+)(\s[^>]*)' 0次或1次
    最后总结前后的'<'和'>',类似于'<span>'


2)、再分析'[\s\S]*'后面的部分'<\s*\/\1\s*>'
    '\s'表示匹配任何空白字符,包括空格、制表符、换页符等等,等价于'[\f\n\r\t\v]'。
    '*'表示匹配前面的子表达式(也就是'\s')0次或多次。
    '\/'的\是转义符,转义'/',例如'</span>'中的'/'
    '\1'要和正则表达式集合'()'一起使用,表示重复正则第一个圆括号内匹配到的内容。以此类推,'\2'表示重复正则第二个圆括号内的内容,这里指的就是'(\S+)'
    '\s'表示匹配任何空白字符,包括空格、制表符、换页符等等,等价于'[\f\n\r\t\v]'。
    '*'表示匹配前面的子表达式(也就是'\s')0次或多次。
    最后总结' <\s*\/\1\s*>',类似于HTML结束标签'</span>'


3)再看'[\s\S]*'
    '[]'是一个中括号表达式,'\s\S'放在其中,就表示一个字符集合。表示可以任意匹配'\s'或'\S'。
    '\s'表示匹配任何空白字符,包括空格、制表符、换页符等等,等价于'[\f\n\r\t\v]'。
    '\S'表示匹配任何非空白字符。
    '*'表示匹配前面的子表达式(也就是'[\s\S]')0次或多次。
    最后总结就是'<span></span>'标签中的内容

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值