Dan*_*ake 0 html regex matching
我一直想要提高我的正则表达技能已经有一段时间了,而且"掌握正则表达式"被推荐了很多次,所以我买了它并且在过去一天左右阅读它.
我创建了以下正则表达式:
^(?:<b>)?(?:^<i>)?<a href="/site\.php\?id=([0-9]*)">(.*?) \(([ a-z0-9]{2,10})\)</a>(?:^</i>)?(?:</b>)?$
Run Code Online (Sandbox Code Playgroud)
哪个匹配前两个链接但忽略<i>标记所包含的两个链接.它提取id,标题和类型.
<a href="/site.php?id=6321">site 1 title (type 1)</a>
<b><a href="/site.php?id=10254">site 2 title (type 2)</a></b>
<i><a href="/site.php?id=5479">site 3 title (type 3)</a></i>
<b><i><a href="/site.php?id=325">site 4 title (type 4)</a></i></b>
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但对于这么简单的东西来说似乎相当长,可以改进吗?
没有使用字符类(\ d为0-9等)我没有看到有问题的正则表达式可以缩短很多; 然而...
作为旁注,值得一提的是,使用正则表达式解析HTML充其量是危险的; 在处理HTML(以及较小程度的XML)时,DOM工具通常更适合.
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |