$p = "|<[^>]+>(.*?)</[^>]+>|i";???????

来源:3-6 查找所有匹配结果

web_東

2016-12-11 23:55

$p = "|<[^>]+>(.*?)</[^>]+>|i";这个表达式如何理解?

写回答 关注

4回答

  • Tesjunma
    2017-04-11 09:34:34

    $p = "|<[^>]+>(.*?)<[^>]+>|i";

    背景:.*?表示最小匹配所有字符(拒绝贪婪匹配)

    分析:
    首先,<[^>]+>对应<li>,在方括号内部的^表示除了方括号内的原子以外的字符,即[^>]表示除了>以外的任意一个字符,+表示一个或者多个字符。
    后面的</[^>]+>也是同理,只不过在前面多添加了一个/反斜杠。
    最后,在此规则串中,分界符为||而不是//。因此,对于其中的</li>里面的/可以不使用转义字符,直接使用/。

    初学,有错误请见谅~

    Alleng...

    理解的很好

    2017-05-25 10:55:44

    共 1 条回复 >

  • 云彩无色3804005
    2017-03-14 14:39:12

    尖括号开始把我也忽悠住了,看了别人的回复才明白了。.*?匹配除换行符以外的0次或1次,懒惰模式

  • 云彩无色3804005
    2017-03-14 14:37:20

    <是左尖括号,[^>]指除了右尖括号以外的任何字符,+指匹配一次或多次,>指右尖括号,(.*?)是一种懒惰匹配模式,匹配任何可见字符,</[^>]+>同理,i指忽略大小写

  • Scallions_
    2016-12-12 00:25:32

    开头和结尾的|应该和/一样吧 因为html标签里面有/所以用|不用转义吗?? <匹配<, [^>]+匹配不是>的字符在[]里面^代表不是后面的字符额+表示匹配多次,>匹配>;(.*?)表示组 .匹配除换行符 \n 之外的任何单字符,*?代表非贪婪模式;后面的还开头的一个差不多匹配</xxxx>;i代表不区分大小写

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181838 学习 · 2577 问题

查看课程

相似问题