【发布时间】:2017-03-09 19:26:15
【问题描述】:
我有以下模式的数据:
abc@1.0 name='abc'
abc@1.0 dep= {
"this",
"that",
}
abc@1.0 someInfo = "blahblah"
abc@2.0 name='abc'
abc@2.0 dep= {
"this",
"that",
}
abc@2.0 someInfo = "blahblah"
abc@3.0 name='abc'
abc@3.0 dep= {
"this",
"that",
}
abc@3.0 someInfo = "blahblah"
目标是查找每个组件@版本的所有记录(例如 abc@1.0)。我找到了多种解决此问题的方法,并且它们运行良好。但是,在此过程中,我无法使用一种特定的正则表达式逻辑来解决此问题。
这是我尝试过的:
(1) 删除所有换行符
(2) 正则表达式模式(abc@.+?)(abc@|$)
问题是这只会获得替代记录,因为我们在正则表达式模式中使用了下一个“abc@”。
我正在尝试在执行下一次正则表达式搜索之前找到一种方法在字符串中移回。即我想获得所有记录,而不仅仅是替代。
请注意,我不是在寻找解决方案 - 我已经解决了这个问题。我想知道如何在执行下一次正则表达式搜索之前返回字符串。
编辑:
感谢@sln,我正在寻找的正则表达式模式:(?s)abc@(?:(?!abc@).)*
【问题讨论】:
-
记录从哪里开始和结束?
-
使用
(?s)abc@(?:(?!abc@).)*之类的东西对记录进行分区。 -
@sln 谢谢,你的第二条评论正是我想要的。
标签: python regex string regular-language