python - 如何匹配组中最接近的文本?
问题描述
我有下面的字符串
object1: {
a: 'text a',
b: 'text b',
},
object2: {
a: 'text2 a',
b: 'text2 b',
}
我有正则表达式
r"(object1|object2):\s\{(?:.*?)(\w+):\s[\'\"]text2 b[\'\"]" with flags re.DOTALL
我预计是('object2', 'b')
但实际是('object1', 'b')
解决方案
正如所表明的,非贪婪向前推进,而不是在已经匹配的组上。一种解决方案可能是在前向匹配组中引入失败的搜索元素:
r"(object1|object2):\s\{(?:[^}]*?)(\w+):\s[\'\"]text2 b[\'\"]"
在这种可能的解决方案中,char '}' 在匹配结构的子元素之前从匹配元素中排除,这是有道理的。
推荐阅读
- laravel - Laravel 8:有没有办法通过和标识符访问绑定实例?对象缓存的正确方法是什么?
- r - 过滤掉这个词
- java - 某些设备上的 android.media.Image.getPlanes() 上的 Camera2 API 异常
- ios - Swift & UILabel : How to add padding and margin in Swift programmatically?
- c# - 如何在 T-SQL 中将动态变量值放入双引号中
- python - 多次运行乌龟,但在第一次运行后收到终结者错误
- reactjs - 错误:操作必须是普通对象。相反,实际类型是:'function'。您可能需要将中间件添加到您的商店设置中
- sql - 添加两个查询 - SQL/HANA
- gpu - mellanox官网测试程序gpu_direct_rdma_access发生了Couldnt register GPU MR
- mongodb - ConfigModule 在 Nestjs 中无法正常工作