python中解析dom中的数据
关键代码:
index.html文件
<html>
<body>
<ul>
<li><a href="www.baidu.com">百度</a></li>
<li><a href="www.taobao.com">淘宝</a></li>
<li><a href="www.sina.com">新浪</a></li>
</ul>
</body>
</html>
python脚本
import re
# 读取本地文件 此处测试时和python文件处于同级 使用 ./index.html访问
f = open("./index.html", "r", encoding="utf-8") # open是python内置用于打开读取文件的函数,encoding解决字符编码不统一的问题
content = f.read()
f.close()
# print(content) # 测试打印读取的内容
list = re.findall("<a href=\"(.*?)\">(.*?)</a>", content) # (.*?) 中的 () 具有 子存储 作用
for i in list:
print(i[1] + " : " + i[0])
正则用于网页校验
关键代码:
页面程序
<html>
<body>
<form action="validate.do" name="myform" method="post" onsubmit="return doSubmit()">
<div>
账号:<input type="text" name="uname" /> 8-16位有效字符
</div>
<div>
密码:<input type="text" name="pass" /> 6-18位
</div>
<div>
邮箱:<input type="text" name="email" />
</div>
<input type="submit" value="提交" />
</form>
</body>
<script>
function doSubmit() {
var myform = document.myform;
var name = myform.name.value;
var pass = myform.pass.value;
var email = myform.email.value;
// 账号名称校验 两种方式:
// /[0-9a-zA-Z_]{8, 16}/
// /^w{8, 16}/
if(!name.match(/^[0-9a-zA-Z_]{8, 16}$/)) {
// todo
console.log('账号必须要求8-16位有效字符!');
return false;
}
// 校验 密码
if(!pass.match(/.{6, 18}/)) {
// todo
console.log('密码要求6-18位');
return false;
}
// 校验 email
if(!email.match(/^\w+@\w+(\.\w+){1,2}$/)) {
// todo
console.log('不符合邮箱格式!');
return false;
}
}
</script>
</html>
正则在mysql数据库的应用
select * from stu where name regexp '^[a-z]{2}$'
正则应用小结
- 正则的格式是通用的
- 即使部分语言有所区别,但也大同小异