import re
if __name__ == "__main__":
url = " ### deded<a href = 'xxx'>这是第一个链接</a><a href = 'xxx'>这是第二个链接</a> ### " # 1-1 清除#,str.replace(old, new)
newurl1 = url.replace("#", "")
print("第一步 1: ", newurl1) # 1-2 清除#,正则替换
p1 = re.compile(r"#+")
newurl2 = p1.sub("", url)
print("第一步 2: ", newurl2) # 2 去除首尾空格, str.strip()
newurl = newurl2.strip()
print("第二步: ", newurl) # 3 match 查找是否存在内链(从字符串开始处匹配,若匹配成功返回,若开头没有匹配上则返回None)
p2 = re.compile(r"<a.*?>.*?</a>")
match = p2.match(newurl)
if match is not None:
print("第三步: ", match.group()) # 4 search 查找是否存在内链(可以从字符串任意位置开始匹配,查找整个字符串,直到成功匹配后返回,匹配失败返回None)
search_match = p2.search(newurl)
if search_match is not None:
print("第四步: " + search_match.group()) # 5 提取所有内链url中的文本,非贪婪匹配 + 分组捕获()
p3 = re.compile(r"<a.*?>(.*?)</a>")
textlist = p3.findall(newurl)
print("第五步: ", textlist) # 6 提取所有内链url,非贪婪匹配
p4 = re.compile(r"<a.*?/a>")
linklist = p4.findall(newurl)
print("第六步: ", linklist)

输出结果:

第一步 1:       deded<a href = 'xxx'>这是第一个链接</a><a href = 'xxx'>这是第二个链接</a>
第一步 2: deded<a href = 'xxx'>这是第一个链接</a><a href = 'xxx'>这是第二个链接</a>
第二步: deded<a href = 'xxx'>这是第一个链接</a><a href = 'xxx'>这是第二个链接</a>
第四步: <a href = 'xxx'>这是第一个链接</a>
第五步: ['这是第一个链接', '这是第二个链接']
第六步: ["<a href = 'xxx'>这是第一个链接</a>", "<a href = 'xxx'>这是第二个链接</a>"]

python 字符串替换、正则查找替换的更多相关文章

  1. 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    转自: http://www.cnblogs.com/huangcong/archive/2011/08/29/2158268.html 黄聪:Python 字符串操作(string替换.删除.截取. ...

  2. Python 字符串操作(截取/替换/查找/分割)

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '1234567 ...

  3. Python - 字符串模板的安全替换(safe_substitute) 具体解释

    字符串模板的安全替换(safe_substitute) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27057339 ...

  4. python字符串截取、查找、分割

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. # 例1:字符串截取 str = '1234567 ...

  5. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sS ...

  6. 黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sS ...

  7. Sublime_正则查找替换

    在sublime编辑器中使用正则表达式对内容进行查找和替换: (1)Find——Replace... (2)出现下图界面 注意:点击左边第一个按钮,开启正则表达式功能. (3) (4)点击Replac ...

  8. lua中 string.find(查找获取字符串) string.gsub(查找替换字符串) string.sub(截取字符串)

    > aaa='/p/v2/api/winapi/adapter/lgj'> print(string.find(aaa, "^/.+/adapter/(.*)"))1 ...

  9. python字符串、正则-xdd

    1.分割字符串 str.split(sep,maxsplit) #(分隔符,分几次) 2.合并字符串 str2=string.join(iterable) #str2='@'.join(list1) ...

随机推荐

  1. 网络编程之实现server端并发聊天

    程序如下: import socketserver class MyServer(socketserver.BaseRequestHandler): #自己定义一个类,继承BaseRequestHan ...

  2. Junit4 之 Assert 静态方法介绍

    Junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类. 1.assertTrue/False([String message,]boolean cond ...

  3. Angular4 响应式编程

  4. 利用Team@OSC进行团队协作开发平台

    利用Team@OSC进行团队协作开发平台 Team@OSC介绍 Team@OSC 是一个团队协作开发平台,轻松管理轻量级团队.代码运行平台(PaaS).代码质量检查应有尽有. 链接:https://t ...

  5. 20175205 2018-2019-2 《Java程序设计》第五周学习总结

    20175205 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 接口:使用关键字interface定义接口 接口声明:interface 接口名 接口体:接 ...

  6. vmware中centos6.7系统图形化安装Oracle-无法打开RUNINSTALLER

    如果解压正确 unzip linux……1/2 unzip linux……2/2 给了权限 chown -R Oracle:oinstall /home/database/ 在oracle用户下,运行 ...

  7. asp.net(c#)网页跳转 方法小结

    返回 打印 asp.net(c#)网页跳转七种方法小结_实用技巧_脚本之家 在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于. ...

  8. latch releae overview

    1. MainFsmStates add MAIN_FSM_LATCH_OPEN_FOR_DOOR_CLOSE 2. mb_PcuTriggerReInit = TRUE; /* start PCU ...

  9. ELK学习笔记之kibana关闭和进程查找

    启动kibana : nohup ./kibana & 查看启动日志 : tail -f nohup kibana  使用  ps -ef|grep kibana 是查不到进程的,主要原因大概 ...

  10. PL/SQL变量的作用域和可见性

    变量的作用域和可见性设计变量在块中的位置,不同的位置使得变量具有不同的有效性与可访问性. 变量的作用域是指可以使用变量的程序单元部分,可以是包和子程序包等. 当一个变量在它的作用域中可以用一个不限定的 ...