具有lookbehind的正则表达式无法使用re.match工作

2024-02-11

以下是Python代码:

import re

line="http://google.com"
procLine = re.match(r'(?<=http).*', line)
if procLine.group() == "":
    print(line + ": did not match regex")
else:
    print(procLine.group())

没有匹配成功,输出如下错误:

回溯(最近一次调用最后一次):文件 “C:/Users/myUser/Documents/myScript.py”,第 5 行, 在 if procLine.group() == "": AttributeError: 'NoneType' 对象没有属性 'group'

当我用 .* 替换正则表达式时,它工作正常,这表明正则表达式有错误,但是,https://regex101.com/ https://regex101.com/当我测试我的正则表达式和字符串的 python 风格时,它似乎匹配得很好。

有任何想法吗?


如果您将lookbehind转换为非捕获组,这应该可以工作:

In [7]: re.match(r'(?:http://)(.*)', line)
Out[7]: <_sre.SRE_Match object; span=(0, 17), match='http://google.com'>

In [8]: _.group(1)
Out[8]: 'google.com'

查找不起作用的原因是 - 作为拉温提到 https://stackoverflow.com/questions/46501800/python-3-regex-lookbehind-not-working/46501837?noredirect=1#comment79958019_46501837 - re.match开始从start字符串,所以看看behind at the start字符串没有意义。


如果您坚持使用后视,请切换到re.search:

In [10]: re.search(r'(?<=http://).*', line)
Out[10]: <_sre.SRE_Match object; span=(7, 17), match='google.com'>

In [11]: _.group()
Out[11]: 'google.com'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有lookbehind的正则表达式无法使用re.match工作 的相关文章

  • pyCUDA无法打印结果

    最近 我使用 pip 为我的 python3 4 3 安装 pyCUDA 但我在测试示例代码时发现 https documen tician de pycuda tutorial html getting started https doc
  • 使用 Boto3 超时的 AWS Lambda 函数

    我已经解决了我自己的问题 但无论如何我都会发布它 希望能节省其他人几个小时 我在 AWS 上有一个无服务器项目 使用 Python 将记录插入到 kinesis 队列中 但是 当我使用 boto3 client kinesis 或 put
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • 正则表达式:匹配未包含在 [] 中的空格

    例如 对于这个字符串 div img wrapper img title Hello world 我想匹配第一个空格 但不匹配第二个空格 包含在 中 正则表达式是什么 以下表达式将通过使用前瞻断言来完成这项工作 gt 下划线代表空格 该表达
  • Python 内置对象的 __enter__() 和 __exit__() 在哪里定义?

    我读到每次使用 with 时都会调用该对象的 enter 和 exit 方法 我知道对于用户定义的对象 您可以自己定义这些方法 但我不明白这对于 打开 等内置对象 函数甚至测试用例是如何工作的 这段代码按预期工作 我假设它使用 exit 关
  • Python Selenium 打印另存为 PDF 等待文件名输入

    我正在尝试通过打印对话框将网站另存为 PDF 我的代码允许我另存为pdf 但要求我输入文件名 我不知道如何将文件名传递到弹出框 附上我的代码 import time from selenium import webdriver import
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • 如何找到多个 pandas 数据框中一对列与任意顺序对的交集?

    我有多个 pandas 数据框 为了简单起见 假设我有三个 gt gt df1 col1 col2 id1 A B id2 C D id3 B A id4 E F gt gt df2 col1 col2 id1 B A id2 D C id
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 按字符分割字符串

    scala 有一个标准的分割字符串的方法StringOps split 但它的行为有点让我惊讶 演示一下 使用快捷便利功能 def sp str String str split toList 以下表达式全部计算结果为 true sp Li
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • Snakemake:将多个输入用于具有多个子组的一个输出的规则

    我有一个工作管道 用于下载 比对和对公共测序数据执行变体调用 问题是它目前只能在每个样本的基础上工作 i e作为每个单独测序实验的样本 如果我想对一组实验 例如样本的生物和 或技术复制 执行变体调用 则它不起作用 我试图解决它 但我无法让它
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 超过两个点的Python相对导入

    是否可以使用路径中包含两个以上点的模块引用 就像这个例子一样 Project structure sound init py codecs init py echo init py nix init py way1 py way2 py w

随机推荐

  • C99 printf 中的可变前导零

    我正在用 C99 编写一个多精度库 根据编译代码的平台 我选择不同的表示基础 因此 举例来说 假设在平台 X 上系统选择 BASE 100 并且在平台上Y BASE 10000 假设我代表大无符号整数 如下所示 typedef struct
  • 如何测量用于 .NET 远程处理的 IP 端口输入/输出的字节数?

    我正在使用 NET 远程处理将定期状态更新从 Windows 服务检索到 控制器 应用程序中 该应用程序用于显示有关服务正在执行的操作的一些实时统计信息 由此产生的网络流量非常巨大 是更新数据大小的很多倍 所以很明显 我以一种非常低效的方式
  • 无法弄清楚这个“被调用的对象不是函数”C 时间错误

    因此 对于我的学校作业的一部分 我需要找到当前时间 我用它作为参考 http www cplusplus com reference ctime localtime http www cplusplus com reference ctim
  • 在 Less 中连接字符串

    我认为这是不可能的 但我想我问是否有办法 我的想法是 我有一个用于 Web 资源文件夹路径的变量 root img file test css url root file px background image url url 我得到这个结
  • 以编程方式调节 Windows 7 计算机上的音量

    我想知道是否可以使 Tkinter 比例与计算机的音量相对应 换句话说 通过拖动比例尺 电脑的音量会不会变大 这只是我编写的一些随机代码 我正在运行 64 位 Windows 7 操作系统 1 from Tkinter import 2 3
  • constexpr 数组成员是编译时常量吗?

    是代码片段 struct Parameters static constexpr int n 2 static constexpr double v n 4 0 5 0 合法的 C 11 如果是的话 是Parameters v 0 and
  • 使用 ANTLR 解析循环

    我想使用 ANTLR 解析一个简单的类似 matlab 的 for 循环 循环就像 for i 1 8 y i a i i end 我想解析循环并解析8次y i a i i语句 以便对每个语句执行一些操作 我的规则如下 操作在 C 中描述
  • 有没有办法冻结 ES6 Map?

    我正在寻找一种冻结原生 ES6 地图的方法 Object freeze https developer mozilla org en US docs Web JavaScript Reference Global Objects Objec
  • Swift - 交付应用程序上的本地通知图标徽章编号更新在后台

    我试图弄清楚如何在传递本地通知时动态更新图标徽章编号 在安排时注册徽章号码不是一个选项 因为如果我在发送任何通知之前注册两个或多个通知 UIApplication shared applicationIconBadgeNumber this
  • web.config 文件何时“执行”?

    每次加载网站上的页面时 服务器都会执行 读取它吗 创建应用程序时 web config 会加载到内存中 这通常是对应用程序中页面 资源的第一个请求 IIS ASP NET 监视 web config 的更改 如果发生更改 将重新启动您的应用
  • 如何在 ggplot 背景(而不是面板)上添加图像?

    如何使用图像作为 ggplot2 绘图的背景 例如 代码 mtcars gt ggplot aes cyl geom bar theme plot background element rect fill black It results
  • 如何为 rsync SSH 命令自动传递密码?

    我需要去做rsync by ssh并希望自动执行此操作 而无需传递密码ssh手动 使用 sshpass 非交互式 ssh 密码提供程序实用程序 在Ubuntu上 sudo apt get install sshpass rsync 命令 u
  • 开始使用 RxJava 和 sqlite

    我正在学习 RxJava 并且已经阅读了几篇文章和视频 我对 RxJava 所提供的功能感到非常敬畏 所以我认为目前已经了解了响应式编程的全部内容 Dan Lew 的本教程 http blog danlew net 2014 09 15 g
  • mysqldump - 将多个数据库从单独的 mysql 帐户转储到一个文件

    我使用的标准 mysqldump 命令是 mysqldump opt databases dbname host dbhost user dbuser password dbpass gzip gt filename 转储多个数据库 mys
  • 通过performSelectorOnMainThread调用方法与普通方法调用

    谁能告诉我当我使用调用方法时有什么不同performSelectorOnMainThread并在没有执行选择器的情况下调用相同的方法 For Exa void sampleCALL 现在使用这两个场景调用此方法 self performSe
  • 动画播放与否取决于链接动画的animationRepeatCount

    我对 iOS 完全陌生 我正在开发一个具有许多帧动画的应用程序 一切都很顺利 直到我尝试用下面发布的方法制作最终动画 该方法是分配给内置文本到语音合成器的委托 func speechSynthesizer synthesizer AVSpe
  • 与 std::minmax_element 一起使用的步长/步长迭代器

    我有一个一维浮点数组 它表示 m n 行和列 浮点值表 我的要求是为每行和每列找到一个最小 最大元素 对于行 我可以通过使用 std minmax element 指定 n 个元素的范围来轻松完成此操作 但对于列 我需要使用步幅迭代器 因为
  • 共享内存——需要同步

    我见过一个项目 其中进程之间的通信是使用共享内存进行的 例如使用 CreateFileMapping在 Windows 下 并且每当其中一个进程想要通知共享内存中某些数据可用时 一种使用命名事件的同步机制会通知感兴趣的一方共享内存的内容发生
  • 在 csv 导入 pandas 期间跳过行

    我正在尝试使用导入 csv 文件pandas read csv 但是 我不想导入数据文件的第二行 0 索引的索引 1 的行 我不知道如何不导入它 因为该命令使用的参数似乎不明确 来自熊猫网站 skiprows 类似列表或整数 要跳过的行号
  • 具有lookbehind的正则表达式无法使用re.match工作

    以下是Python代码 import re line http google com procLine re match r lt http line if procLine group print line did not match r