Python第十三次知识点学习---正则表达式(三)例题

本文介绍了三个正则表达式的实际应用:批量检查HTML文件是否包含iframe,查找字符串中每个字符首次出现的位置,以及搜索ABAC和AABB形式的成语。示例代码详细展示了如何使用Python实现这些功能,对于理解和运用正则表达式具有很好的指导作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哒哒哒哒,正则表达式最后一篇学习笔记来啦!

一、批量检查网页文件是否被嵌入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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值