python - 使用正则表达式从文本中获取所有匹配项
问题描述
我有文字
文本示例(仅示例,我无法显示真实文本):
some words getServerResponse={go [for {a walk}] goodby }something hello world text={what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}
在这个例子中,“文本”——它是我需要得到的标签。我们可以看到我需要的所有信息都包含在“text =”之后的大括号中。
我尝试使用此模板:
text=(.*)
并期望从我的文本中获取列表中的两个元素:
{what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}
{second[ {text what} i ]want number two}
第一个元素包含第二部分无关紧要,因为从第一个元素我只得到第一个打开的花括号和关闭第一个花括号的花括号之间的内容:
what[ i want {in curl} ]braces
但是这个text=(.*)
模板只给了我一个变体
{what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}
如何从我的文本中获取所有匹配项作为列表元素?
解决方案
假设所有大括号都采用给定的格式,我想出了这个正则表达式。
(text=)(\{(\w|\[|\s|\{|\}|\])+)
这将在每个text=
. 请注意,我添加了 3 个匹配组。第三组暂时可以忽略。
Group1
=>text=
Group2
=>{what[ i want {in curl} ]braces}
和{second[ {text what} i ]want number two}
您可以使用 match all 并提取第二个捕获组来获得您想要的结果。
推荐阅读
- nuget - 将整个解决方案打包成一个 nupkg?
- c# - 字符串定义中的条件
- react-native - 如何在 React Native 中使用 NativeModules 将图像设置为适合主屏幕的主屏幕壁纸
- azure-devops - 在队列中运行不同的发布管道
- sql - SQL Server 根据列的总和获取随机行
- opencv - 使用 VLC 接收 OpenCV GStreamer UDP 流
- python - del on field from vars(instance) 从对象中删除属性
- cassandra - 添加新节点后连接到 cassandra 集群
- vue.js - 重复的发出事件是否在父组件中重叠/一起调用?
- javascript - Chrome 扩展开/关按钮