Python正则表达式不匹配http://

2024-01-21

我面临匹配和替换某些单词的问题,这些单词未包含在 http:// 中

当前正则表达式:

 http://.*?\s+

这符合模式http://www.egg1.com http://www.egg2.com http://www.egg2.com

我需要一个正则表达式来匹配 http:// 之外包含的某些单词

Example:

"This is a sample. http://www.egg1.com and http://egg2.com. This regex will only match 
 this egg1 and egg2 and not the others contained inside http:// "

 Match: egg1 egg2

 Replaced: replaced1 replaced2

最终输出:

 "This is a sample. http://www.egg1.com and http://egg2.com. This regex will only 
  match this replaced1 and replaced2 and not the others contained inside http:// "

问题: 需要匹配某些模式(例如:egg1 Egg2),除非它们是 http:// 的一部分。如果 Egg1 和 Egg2 出现在 http:// 中,则不要匹配它们


我能想到的一种解决方案是为 HTTP-URL 和您的模式形成一个组合模式,然后相应地过滤匹配项:

import re

t = "http://www.egg1.com http://egg2.com egg3 egg4"

p = re.compile('(http://\S+)|(egg\d)')
for url, egg in p.findall(t):
  if egg:
    print egg

prints:



egg3
egg4
  

UPDATE:使用这个习语re.sub(),只需提供一个过滤函数:

p = re.compile(r'(http://\S+)|(egg(\d+))')

def repl(match):
    if match.group(2):
        return 'spam{0}'.format(match.group(3))
    return match.group(0)

print p.sub(repl, t)

prints:



http://www.egg1.com http://egg2.com spam3 spam4
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python正则表达式不匹配http:// 的相关文章

随机推荐

  • 返回 PHP 多维数组中最后一个数组的元素

    如何在 PHP 中动态显示最后一个数组中的元素 例如 Array 0 gt Array id gt 6 user id gt 8 category path gt Sport 1 gt Array id gt 8 user id gt 8
  • syscall_thread_switch iOS 8.3 竞赛 - CocoaLumberjack bug?如何调试这个?

    我在我的应用程序中遇到了竞争条件 每当我暂停调试时 所有或除 1 个线程之外的所有线程都会卡在 syscall thread switch 上 它在模拟器上重现得更频繁 在 iPad Air 上也是如此 CocoaLumberjack 的
  • 从 Hibernate 4.3.6 迁移到 Hibernate 5

    我有一个旧项目 我使用 Java API 中的 Date 我想将其更改为新的 Java 8 Date APILocalDateTime 我读到 Hibernate 5 之前的版本不支持新的 Java 8 Date API 我决定从 Hibe
  • 原生 Vim 随机数脚本

    我知道有多种方法可以获取随机数 例如从 shell 中 然而 我在 Android 手机上运行 vim 几乎没有编译 而且 它不必是严格随机的 关键是 在 Vim 中获取一系列相当好的随机数的有趣 简洁 快速 即使用 vim 原生函数 或简
  • MS Access 2010 运行时 - 连续形式中缺少鼠标右键单击上下文菜单

    我在 MS Access 2003 中编写了一个应用程序 我可以使用 Access 2010 运行该应用程序 但是当我仅使用 MS Access 2010 运行时打开同一个 2003 应用程序时 我无法再以连续形式使用鼠标右键单击 因为我可
  • 向下转型最佳实践 (C++)

    静态代码分析工具往往会大量谈论 将基类向下转换为派生类 我还发现了一些编码标准指南 其中提到不要这样做 所以我想知道什么是最佳实践方法 这是我的用例 我有一个 Base 接口 DerivedA DerivedB 类 然后是一个包含 Base
  • 如何在codeigniter中使用pdo?

    据我所知 PDO 支持最近已添加到 codeigniter 但我找不到任何有关如何实际使用它的文档或教程 谁能告诉我如何使用它 您可以编辑 application config database php并启用 PDO 驱动程序 db def
  • Java中Float的最大值?

    下列question https stackoverflow com questions 3884793 minimum values and double min value in java表示 Double 的最小值是 Double M
  • QEMU和KVM在虚拟机I/O中扮演什么角色?

    我发现 QEMU 和 KVM 之间的界限非常模糊 我发现有人说虚拟机是qemu进程 而另一些人说是kvm进程 究竟是什么 而QEMU和KVM在虚拟机I O中扮演什么角色呢 比如一个vm做PIO MMIO的时候 是qemu还是kvm会把它困住
  • matplotlib:同一张图上有2个不同的图例

    我有一个图 其中不同的颜色用于不同的参数 不同的线条样式用于不同的算法 目的是比较使用相似参数执行的不同算法的结果 这意味着我总共使用了 4 种不同的颜色和 3 种不同的线条样式 在同一张图表上总共使用了 12 个图 我实际上是根据颜色构建
  • 带有 CSS 波浪的动画文本

    怎么运行的 The png下面显示的图像被剪辑到带有动画的文本中 行动中 body background 000000 Wave Loader text transform uppercase font family Cabin Conde
  • 如何通过 SSH 协议克隆 Github Gist?

    Github 似乎确实希望我们使用 HTTPS 协议来使用 Gists 例如 他们只在 Gist 页面上列出 HTTPS url 例如https gist github com donatello 5834862 https gist gi
  • 从 Microsoft SQL 查询到 Pandas Dataframe

    我正在尝试用 Python3 编写一个程序 它将在 Microsoft SQL 中的表上运行查询并将结果放入 Pandas DataFrame 中 我的第一次尝试是下面的代码 但由于某种原因 我不明白这些列没有按照我在查询中运行它们的顺序出
  • iOS 上的 HTML5 MSE

    我正在尝试使用 Chrome Mobile 让 hls js 在 iOS 上工作 但我注意到 Chrome Mobile 不支持 MediaSourceExtensions 这绝对是必要的 iOS 是否支持 MSE Chrome 移动版 F
  • watchdog(python) - 仅监视一种文件格式并忽略“PatternMatchingEventHandler”中的所有其他内容

    我正在运行代码本文 https www thepythoncorner com 2019 01 how to create a watchdog in python to look for filesystem changes 并进行了一些
  • 设置Jest和Enzyme来测试React 15找不到模块react/lib/ReactTestUtils

    我有一个反应项目 正在尝试设置一些测试 由于以下设置指南 问题 https github com facebook jest issues 1353 https github com facebook jest issues 1353 ht
  • 对指定月份和年份的数据框进行子集化

    我有一个数据框 其中第一列是 d m y 格式的日期 第二列是数值 销售额 我想为一年中的每个月创建子集 例如 11 11 12 11 等 我尝试了这个答案中建议的代码 使用多个条件对 data frame 进行子集化 https stac
  • 仅从 perl 列表中获取某些值

    首先我会描述我所拥有的 然后是问题 我有一个这样构造的文本文件 Start of file name name2 ignore name4 jojobjim name3 name6 name9 pop gt
  • 我如何从ajax调用web api控制器

    我是 ASP MVC 和 Web api 的初学者 通过使用下面的代码 我尝试调用在控制器中编写的函数 为了进行检查 我使用了断点 因此控件无法转到控制器 因此我无法跟踪实际发生的情况 给定的代码解释了如何将用户名和密码传递给控制器
  • Python正则表达式不匹配http://

    我面临匹配和替换某些单词的问题 这些单词未包含在 http 中 当前正则表达式 http s 这符合模式http www egg1 com http www egg2 com http www egg2 com 我需要一个正则表达式来匹配