因为实验需要从2w个网页中提取action中的链接,显然用bs4去解析dom树,再去逐个定位form、action。是十分花费时间的。
故笔者就利用正则表达式去解决这一个问题,

  • 我第一步想法是匹配以 action=“ 开头的 “ 结尾字符串
  • 用 aciton.*?" 就可以匹配出来了
  • 但是这就遇到拦路虎了,因为笔者也是第一次动手写正则,就很菜,什么也不懂
  • 在查了相关资料后,多方尝试,直接崩溃,
  • 不玩了,去打王者了
  • 在经历过王者连败后,战士依旧归来
  • 发现了关于正则两个很有用的知识点
    • 零宽断言
    • 负向零宽断言

举个栗子:

<form
action="http://websitesmail.att.com/ajax_login/redirect.php"
method="post"
id="webmail_form">
  • 首先这里用到了负向零宽断言,具体的术语名字更长,在我理解看来,就是你所需要的位置,其前方可以满足你的表达式,故第一步结果如下
<?<=action=">
  • 现在咱们有了要匹配字段前面的要求,接下来再加上表示你所需要字符串的语法
<?<=action=">.*?
  • 最后我们是要用“去收尾的,故用到类零宽断言,故最终的结果就是这样
(?<=action=").*?(?=")

这里我谈一下个人对零宽断言的一点点理解,

  • 零宽断言分为正向反向
  • 其不同于正则里面的开始符与结束符
  • 其区别在于开始符与结束符,其最终结果是包含了你所指定的开始和结束的字符(串)
  • 但是零宽断言的最终匹配结果是不包含你指定的定位符的。
  • 故这个就很好的解决了,我只想要action里面的链接,而不想附带别的其余东西

希望有帮到你,谢谢

由正则表达式提取 html action的属性值,谈零宽断言相关推荐

  1. 给定字符串提取姓名(字符串、list、re“零宽断言”)

    Python 官网: https://www.python.org/   这里,才 python 前沿.可惜是英文原版.所以,我要练习英文阅读.

  2. javascript 正则表达式-零宽断言

    http://buzheng.org/blog/regex-zero-width-assertion/ 正则表达式里面比较高级的应用就属于零宽断言了.那么什么是零宽断言呢?拆分法从字面上分析一下,零宽 ...

  3. Selenium提取数据之标签对象提取文本内容和属性值

    Selenium提取数据之标签对象提取文本内容和属性值 find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法 对元素执行点击操作element.clic ...

  4. grep零宽断言正则表达式

    一.grep零宽断言: (匹配宽度为零,满足一定的条件/断言) 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用, ...

  5. JAVASCRIPT 正则表达式学习--基础与零宽断言(转自司徒正美)

    元字符 ( [ { \ ^ $ | ) ? * + . 预定义的特殊字符 字符 正则 描述 \t /\t/ 制表符 \n /\n/ 制表符 \r /\r/ 回车符 \f /\f/ 换页符 \a /\a ...

  6. Python正则表达式之零宽断言(4)

    文章目录 声明 | ^ $ \A \Z \b \B 分组 反向引用 注意 声明 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单 ...

  7. 正则表达式零宽断言详解

    在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...

  8. 正则表达式之零宽断言

    介绍: 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用,用于指定一个位置,这个位置应该满足一定的条件(即断言), ...

  9. php 零宽断言,正则表达式之零宽断言

    介绍: 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用,用于指定一个位置,这个位置应该满足一定的条件(即断言), ...

最新文章

  1. UIView-Maker,实现UIView的clone操作和统一样式模型
  2. 在sae上编译代码是所遇到的问题
  3. 作用域,上下文,闭包
  4. 高级指引——自定义节点
  5. 微软Azure storage account的connection string
  6. 花了一个深夜,才用C语言写了一个2048游戏雏形
  7. MySQL日期格式符
  8. 定制textField
  9. 现在的计算机电源都要经过,电脑待机后必须关闭电源才能开启
  10. Python 爬取 20 万条评论,告诉你周杰伦新歌为啥弄崩 QQ 音乐?
  11. ubuntu-16.04安装程序报错 you might want to run 'apt-get -f install' to correct these
  12. ndows外壳公用dll,Windows外壳公用DLL已停止工作
  13. www.sohu.com/a/162498139_165716
  14. 华为手机系统更新成鸿蒙,如何将自己的华为手机升级成鸿蒙系统
  15. 程序员女朋友都是在哪找的?
  16. pmos管驱动原理图
  17. 3.28layui添加商品功能和显示所有商品功能
  18. AUTOCAD——打断命令、合并命令
  19. 什么是keep-alive?
  20. 从内地或海外前往香港的步骤攻略(2023.2.更新)

热门文章

  1. 哪个软件里可以制作安卓脚本?
  2. python与unity3d语言_Unity3D研究院之多语言用中文做KEY(七十五)
  3. [nginx源码]FastCGI模块详解
  4. maya mentray_mentalray for maya2017
  5. maya里的substance节点使用
  6. Python中去除字符串中空格的四种方法
  7. apache poi的使用
  8. C++每日一题(基础)7、8
  9. 硕士论文的中文摘要中,能加参考文献吗?
  10. UE5 使用Nanite 模型变黑