哒哒哒哒,正则表达式最后一篇学习笔记来啦!
一、批量检查网页文件是否被嵌入iframe框架。
使用正则表达式批量检查网页文件是否被嵌入iframe框架。
import os
import re
def detectIframe(a):
list = []#存放网页文件内容的列表
with open(a, encoding='utf8') as fp:
for line in fp:#读取文件所有行,删除两侧的空白字符,然后添加到列表中
list.append(line.strip())
list = ' '.join(list)#把所有内容连接成字符串
b = re.findall(r'<iframe\s+src=.*?></iframe>', list)#正则表达式
if b:
return {a:b}#返回文件名和被嵌入的框架
return False
for a in (f for f in os.listdir('.') if f.endswith(('.html','.htm'))):#遍历当前文件夹中所有html和htm文件并检查是否被嵌入框架
c = detectIframe(a)
if not c:
continue
for d, e in c.items():#输出检查结果
print(d)
for ee in e:
print('\t', ee)
二、查找字符串中每个字符的首次出现。
查找字符串中每个字符的首次出现。给定一个任意字符串,要求得到一个新字符串,重复字符只保留一个,并且新字符串中的字符保持在原字符串中首次出现的先后顺序。例如,abcdaaabe处理后应得到abcde。
from re import findall
from random import choice
from string import digits
def f1(c):
result = set(c)# 转换为集合,去重
result = ''.join(sorted(c, key=lambda ch:c.index(ch)))# 按其在原字符串中的先后顺序,把集合里的字符连接为字符串
return result
def f2(c):
result = []
for ch in c:
if ch not in result:
result.append(ch)
return ''.join(result)
def f3(c):
return ''.join(findall(r'(\w)(?!.*\1)', c[::-1]))[::-1]
c = ''.join(choice(digits) for _ in range(30))# 随机字符串
print(c)
print(f1(c))
print(f2(c))
print(f3(c))
三、查找ABAC和AABB形式的成语
查找ABAC和AABB形式的成语
from re import findall
text = '''行尸走肉、金蝉脱壳、百里挑一、金玉满堂、
背水一战、霸王别姬、天上人间、不吐不快、海阔天空、
情非得已、满腹经纶、兵临城下、春暖花开、插翅难逃、
黄道吉日、天下无双、偷天换日、两小无猜、卧虎藏龙、
珠光宝气、簪缨世族、花花公子、绘声绘影、国色天香、
相亲相爱、八仙过海、金玉良缘、掌上明珠、皆大欢喜\
浩浩荡荡、平平安安、秀秀气气、斯斯文文、高高兴兴'''
pattern = r'(((.).\3.)|((.)\5(.)\6))'
for item in findall(pattern, text):
print(item[0])