python - python正则表达式返回空字符串
问题描述
鉴于:
lst = ['(abc): my name is ?123']
我试图从':'返回所有内容,直到 lst[0] 结束,为此我尝试了一个正则表达式:
result = re.search(r': (.*?)', lst[0]).group(1)
它返回一个空字符串。如何正确使用正则表达式来做到这一点?预期输出:
'my name is ?123'
使用的资源:Regex wiki
解决方案
问题是你把你的.*
懒惰放在?
最后。Lazy 意味着尽可能少地匹配,以获得有效匹配。在这种情况下,由于您的模式在 之外没有任何可匹配的内容(.*?)
,因此正则表达式引擎正在匹配空字符串。只需使用(.*)
非惰性版本,它就会起作用。
lst = ['(abc): my name is ?123']
result = re.search(r': (.*)', lst[0]).group(1)
print(result)
这打印:
my name is ?123
推荐阅读
- node.js - Discord 机器人进度条
- html - jquery.min.js:2 Uncaught RangeError:超过最大调用堆栈大小
- c# - C#泛型类包含列表
但我无法访问 班级 - swift - topLayoutGuide.length 折旧
- c# - 在 ASP:Net Razor Pages 中为 _Layout.cshtml 添加本地化
- c - 计算 MPI 程序 Intel i7 第 8 代(6 核,每核 2 个线程)的变量等级和大小的有效值范围
- python - 在 macOS 上安装 PyQt4 时 C++ 标准库出现问题
- python-3.x - KeyError:“名称‘预测’是指不在图中的操作。”
- html - 我们可以在微数据模式的标签上添加 itemscope 和 itemtype 吗?
- java - 从 Wildfly 8.2 迁移到 WildFly11 后的 Infinitspan 问题