2019.8.23
多线程
正则表达式
符号 | 解释 | 示例 | 说明 |
---|---|---|---|
. | 匹配任意字符 | b.t | 可以匹配bat / but / b#t / b1t等 |
\w | 匹配字母/数字/下划线 | b\wt | 可以匹配bat / b1t / b_t等 但不能匹配b#t |
\s | 匹配空白字符(包括\r、\n、\t等) | love\syou | 可以匹配love you |
\d | 匹配数字 | \d\d | 可以匹配01 / 23 / 99等 |
\b | 匹配单词的边界 | \bThe\b | |
^ | 匹配字符串的开始 | ^The | 可以匹配The开头的字符串 |
$ | 匹配字符串的结束 | .exe$ | 可以匹配.exe结尾的字符串 |
\W | 匹配非字母/数字/下划线 | b\Wt | 可以匹配b#t / b@t等 但不能匹配but / b1t / b_t等 |
\S | 匹配非空白字符 | love\Syou | 可以匹配love#you等 但不能匹配love you |
\D | 匹配非数字 | \d\D | 可以匹配9a / 3# / 0F等 |
\B | 匹配非单词边界 | \Bio\B | |
[] | 匹配来自字符集的任意单一字符 | [aeiou] | 可以匹配任一元音字母字符 |
[^] | 匹配不在字符集中的任意单一字符 | [^aeiou] | 可以匹配任一非元音字母字符 |
* | 匹配0次或多次 | \w* | |
+ | 匹配1次或多次 | \w+ | |
? | 匹配0次或1次 | \w? | |
{N} | 匹配N次 | \w{3} | |
{M,} | 匹配至少M次 | \w{3,} | |
{M,N} | 匹配至少M次至多N次 | \w{3,6} | |
| | 分支 | foo|bar | 可以匹配foo或者bar |
(?#) | 注释 | ||
(exp) | 匹配exp并捕获到自动命名的组中 | ||
(?<name>exp) | 匹配exp并捕获到名为name的组中 | ||
(?:exp) | 匹配exp但是不捕获匹配的文本 | ||
(?=exp) | 匹配exp前面的位置 | \b\w+(?=ing) | 可以匹配I’m dancing中的danc |
(?<=exp) | 匹配exp后面的位置 | (?<=\bdanc)\w+\b | 可以匹配I love dancing and reading中的第一个ing |
(?!exp) | 匹配后面不是exp的位置 | ||
(?<!exp) | 匹配前面不是exp的位置 | ||
*? | 重复任意次,但尽可能少重复 | a.*b a.*?b | 将正则表达式应用于aabab,前者会匹配整个字符串aabab,后者会匹配aab和ab两个字符串 |
+? | 重复1次或多次,但尽可能少重复 | ||
?? | 重复0次或1次,但尽可能少重复 | ||
{M,N}? | 重复M到N次,但尽可能少重复 | ||
{M,}? | 重复M次以上,但尽可能少重复 |
正则练习
获取“Hello”
获取“World”
使用正则表达式获取网站信息
import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
url = 'http://www.89ip.cn'
response = requests.get(url,headers=headers)
html = response.text
#print(html)
regex = re.compile('<td>\n.*\t(.*?)\t\t</td>')
res = regex.findall(html)
print(res)
(base) C:\Users\Administrator>F:/install/Anaconda/python.exe d:/VScode/Untitled-12.py
['163.204.247.118', '9999', ' 广东省汕尾市', '联通', '2019/08/27 22:30:03', '120.83.109.75', '9999', ' 广东省揭阳市普宁市', '联通', '2019/08/27 22:30:03', '182.35.81.127',
'9999', ' 山东省泰安市', '电信', '2019/08/27 22:30:03', '113.124.93.218', '9999', '
山东省烟台市', '电信', '2019/08/27 22:30:03', '183.23.75.95', '61234', ' 广东省东莞市
', '电信', '2019/08/27 22:30:03', '58.211.134.98', '38480', ' 江苏省苏州市', '电信', '2019/08/27 22:30:03', '60.9.1.250', '80', ' 河北省衡水市深州市', '联通', '2019/08/27 22:30:03', '117.95.135.56', '61234', ' 江苏省宿迁市', '电信', '2019/08/27 22:30:03', '116.62.240.1', '3128', ' 黑龙江省', '中移铁通', '2019/08/27 22:30:03', '59.57.149.246', '9999', ' 福建省厦门市', '电信', '2019/08/27 22:30:03', '163.204.246.160', '9999', '
广东省汕尾市陆丰县', '联通', '2019/08/27 22:30:03', '122.193.245.203', '9999', ' 江
苏省南通市', '联通', '2019/08/27 22:30:03', '182.34.35.1', '9999', ' 山东省烟台市', '
电信', '2019/08/27 22:30:03', '49.70.64.222', '9999', ' 江苏省宿迁市', '电信', '2019/08/27 22:30:03', '36.255.87.228', '83', ' 浙江省', '电信', '2019/08/27 22:30:03']