html标签和正则表达式

特殊符号

空格      
>          >
<          &lt;
&         &amp;
¥          &yen;
版权     &copy;
注册     &reg;

 

 

 

常用标签

a标签   链接标签

<a href="https://www.sogo.com">链接标签</a>

img标签  图片标签

<img src="111.png" alt="">图片标签

div标签   页面布局标签

是所有网页中出现频率最高的标签 内部可以无限制的嵌套任意标签

span标签  页面文本标签

是所有网页中涉及到文字可能会出现的标签 频率并不是太高

 

 

 

列表标签

在网页上看似有规则排列的横向或者竖向的内容基本都是用列表标签完成的

<ul>
    <li>大大大</li>
    <li>小消息</li>
    <li>小小小</li>
    <li>111</li>
    <li>2222</li>
</ul>

 

 

 

表格标签

涉及到多条相同格式数据展示的时候可以考虑使用表格标签

<table>
    <thead>
        <tr>
            <th>序号</th>      <!--书写一个个字段名-->
            <th>姓名</th>
            <th>年龄</th>
        </tr>                  <!--一个tr就是一行-->
    </thead>                 <!--书写表头数据(字段名)-->
    <tbody>
        <tr>
            <td>1</td>        <!--书写一个个真实数据-->
            <td>jason</td>
            <td>123</td>
        </tr>
    </tbody>                 <!--书写表单数据(真实数据)-->
</table>
View Code

 

表单标签

涉及到用户数据的获取一般都需要使用表单标签

input标签
type参数
  text 普通文本
  password 密文展示
  email 邮箱格式
  date 日期格式
  radio 单选
  checkbox 多选
  file 文件  
  submit 提交按钮
  reset 重置按钮
  button 普通按钮
select标签
  option子标签
textarea标签
  获取大段文本

 

标签特性(重要)

id和class都称之为a标签的属性

<a id='' class=''></a>

标签两大核心属性

 id   只能单独寻找某个人

类似于标签的身份证号码 用于唯一标识标签
在同一个html文档中id不能重复

class   可以寻找到那么一群人

类似于标签的种群(类别) 用于区分不同的类
在用一个html文档中class值可以重复 表示属于同一个类别

 <p class='c1'></p>
                <a class='c1'></a>
                <div class='c1'></div>
         一个标签可以含有多个class值
                <span class='c1 c2 c3'></span>
View Code

标签还可以自定义任何属性

<a username='jason' pwd=123></a>

username和pwd就是自定义的值

标签之间的关系描述

<div>div内部的标签都可以称之为是div的后代
    <a>上一级div的儿子</a>
    <p>上一级div的儿子
        <span>上一级p的儿子,上上一级div的孙子</span>
    </p>
    <div>上一级div的儿
        <a>上一级div的儿子,上上一级div的孙子</a>
    </div>
    <span>上一级div的儿子</span>
</div>

 

正则表达式

引入

python代码数据校验

 # 1.获取用户手机号
        phone = input('phone num>>>:').strip()
        # 2.先判断长度是否是11位
        if len(phone) == 11:
            # 3.再判断是否是纯数字
            if phone.isdigit():
                # 4.最后判断开头是否是13 14 15 18
                if phone.startswith('13') or phone.startswith('14') or phone.startswith('15') or phone.startswith('18'):
                    print('是一个合法的手机号')
                else:
                    print('手机号格式错误')
            else:
                print('手机号必须是纯数字')
        else:
            print('手机号必须是11位')    
View Code

正则表达式校验

 import re
        phone_number = input('please input your phone number : ')
        if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
                print('是合法的手机号码')
        else:
                print('不是合法的手机号码')
View Code

使用正则表达式可以极大地简化数据筛选和校验的步骤

有时候匹配的内容很精确的情况下可以直接写具体内容

 

正则表达式:字符组

字符组在匹配内容的时候是单个单个字符挨个匹配

[0123456789]      匹配0到9之间的任意一个数字包括首尾
[0-9]                     简写:匹配0到9之间的任意一个数字包括首尾
[a-z]                     匹配小写字母a到z之间的任意一个字母包括首尾
[A-Z]                    匹配大写字母A到Z之间的任意一个字母包括首尾
[0-9a-zA-Z]          匹配数字或者小写字母或者大写字母

 

正则表达式:符号

符号在匹配内容的时候是单个单个字符挨个匹配

.        匹配除换行符以外的任意字符
\d      匹配数字
^       匹配字符串的开始
$       匹配字符串的结尾
a|b    匹配字符a或字符b
()       给正则表达式分组 本身没有任何意义
[...]    匹配字符组中的字符
[^...]       匹配除了字符组中字符的所有字符(取反)

 

正则表达式:量词

跟在正则表达式的后面可以一次性匹配多个字符
量词必须跟在正则表达式后面 不能单独出现使用
*              重复零次或更多次
+             重复一次或更多次
?             重复零次或一次
{n}          重复n次
{n,}         重复n次或更多次
{n,m}      重复n到m次

正则表达式默认情况下都是贪婪匹配>>>:尽可能多的匹配

 

小练习

正则          待匹配的文本                  结果
海.            海燕海娇海东           三个结果 海燕、海娇、海东
^海.          海燕海娇海东           一个结果 海燕
海.$          海燕海娇海东          一个结果 海东
海.*          海燕海娇海东           一个结果 海燕海娇海东

 

 

正则          待匹配的文本                             结果

李.?          李杰和李莲英和李二棍子            李杰 李莲 李二

李.*           李杰和李莲英和李二棍子            李杰和李莲英和李二棍子

李.+          李杰和李莲英和李二棍子            李杰和李莲英和李二棍子

李.{1,2}     李杰和李莲英和李二棍子           李杰和  李莲英  李二棍

 

贪婪匹配与非贪婪匹配

正则          待匹配的文本                             结果

<.*>          <script>123</script>                 <script>123</script>

右侧尽可能多的匹配大括号最后一个才停止

将贪婪匹配变成非贪婪匹配只需要在量词后面加一个问号即可

正则          待匹配的文本                             结果

<.*?>         <script>123</script>                  <script>  </script> 

右侧遇到一个大括号就停止匹配

 

取消转义

\n     匹配的是换行符
\\n    匹配的是\n
\\\\n  匹配的是\\n

 

re模块

如果想在python代码中使用正则表达式需要借助于内置模块re

 import re
    text = '<script>123</script>'
    res = re.findall('<.*?>',text)
    print(res)

 

 

posted @ 2021-09-14 15:14  ふじわらたくみ  阅读(335)  评论(0编辑  收藏  举报