4. 正则表达式的案例实战

4.1 正则表达式在Python中的使用--解析数据

  • 案例要求:如下图所示有一个网页文件,请使用Python的正则将网页中的超级链接信息(名称和url地址)解析处理

  • 实现步骤:使用open()、read()读取文件内容,导入re模块,使用正则匹配后遍历输出。

<!DOCTYPE html>
<html>
<head>
    <title>Python 正则表达式实例</title>
</head>
<body>
    <h2>常用网站链接</h2>
    <ul>
        <li><a href="https://www.python.org">Python官方网站</a></li>
        <li><a href="https://www.djangoproject.com">Django官方网站</a></li>
        <li><a href="https://www.baidu.com">百度搜索引擎</a></li>
        <li><a href="https://blog.csdn.net">CSDN官方网站</a></li>
        <li><a href="https://edu.csdn.net/">CSDN学院</a></li>
    </ul>
</body>
</html>
  • 实现代码:
import re

f = open("./index.html","r")
content = f.read()
f.close()

#print(content)

title = re.search("<title>(.*?)</title>",content)
if title:
    print(title)
    print("标题:"+title.group())


alist = re.findall('<a href="(.*?)">(.*?)</a>',content)

for ov in alist:
    print(ov[1]+":"+ov[0])

`

4.2 正则表达式在JavaScript中的使用--表单验证

  • 案例要求:参考下图,使用JavaScript语言实现页面中表单的验证功能。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>JavaScript--实例</title>

    </head>
    <body>
        <h3 id="hid">JavaScript实例--表单事件</h3>
        <form action="my.html" name="myform" method="post" onsubmit="return doSubmit()">
            账号:<input type="text" name="uname"/> 8-16位的有效字符<br/><br/>
            密码:<input type="password" name="upass"/> 6-18位<br/><br/>
            邮箱:<input type="text" name="email"/> <br/><br/>
            <input type="submit" value="提交"/>
        </form>
      <script type="text/javascript">
         //表单提交事件处理
         function doSubmit(){
            //验证账号
            var name = document.myform.uname.value;
            if(name.match(/^\w{8,16}$/)==null){
                alert("账号必须为8-16的有效字符!");
                return false;
            }

            //验证密码
            var pass = document.myform.upass.value;
            if(pass.match(/^.{6,18}$/)==null){
                alert("密码必须为6-18位!");
                return false;
            }

            //验证邮箱
            var email = document.myform.email.value;
            if(email.match(/^\w+@\w+(\.\w+){1,2}$/)==null){
                alert("请输入正确的Email地址!");
                return false;
            }
            return true;
         }

      </script>
    </body>
</html>

4.3 正则表达式在MySQL数据库中的使用--数据查询

MariaDB [mydb]> select * from stu;
+----+----------+-----+-----+----------+
| id | name     | age | sex | classid  |
+----+----------+-----+-----+----------+
|  1 | zhangsan |  22 | m   | python03 |
|  2 | lisi     |  25 | w   | python04 |
|  3 | wangwu   |  20 | m   | python03 |
|  4 | zhaoliu  |  19 | w   | python04 |
|  5 | qq01     |  20 | m   | python03 |
|  6 | qqmn     |  21 | w   | python04 |
|  7 | qq03     |  20 | m   | python05 |
|  8 | uu01     |  21 | w   | python04 |
|  9 | uu02     |  20 | m   | python05 |
| 10 | aa       |  29 | w   | python03 |
| 11 | bb       |  20 | m   | python04 |
| 16 | abc      |  25 | m   | python05 |
+----+----------+-----+-----+----------+
12 rows in set (0.00 sec)

-- 使用正则查询姓名是使用任意两位小写字母构成的数据信息
MariaDB [mydb]> select * from stu where name regexp '^[a-z]{2}$';
+----+------+-----+-----+----------+
| id | name | age | sex | classid  |
+----+------+-----+-----+----------+
| 10 | aa   |  29 | w   | python03 |
| 11 | bb   |  20 | m   | python04 |
+----+------+-----+-----+----------+
2 rows in set (0.00 sec)

--查询name的值为2~4位的小写字母
MariaDB [mydb]> select * from stu where name regexp '^[a-z]{2,4}$';
+----+------+-----+-----+----------+
| id | name | age | sex | classid  |
+----+------+-----+-----+----------+
|  2 | lisi |  25 | w   | python04 |
|  6 | qqmn |  21 | w   | python04 |
| 10 | aa   |  29 | w   | python03 |
| 11 | bb   |  20 | m   | python04 |
| 16 | abc  |  25 | m   | python05 |
+----+------+-----+-----+----------+
5 rows in set (0.00 sec)

-- 查询name字段值是由两位字母加两位数字构成的数据信息
MariaDB [mydb]> select * from stu where name regexp '^[a-z]{2}[0-9]{2}$';
+----+------+-----+-----+----------+
| id | name | age | sex | classid  |
+----+------+-----+-----+----------+
|  5 | qq01 |  20 | m   | python03 |
|  7 | qq03 |  20 | m   | python05 |
|  8 | uu01 |  21 | w   | python04 |
|  9 | uu02 |  20 | m   | python05 |
+----+------+-----+-----+----------+
4 rows in set (0.00 sec)

MariaDB [mydb]>