我想知道如何针对以下问题使用Python创建RegEx:
我有一个带有数据的文本文件,正则表达式仅在以下情况下匹配:
文本文件:
blabla
ID
blabla
...
blabla
value1
blabla
...
blabla
value2
blabla
...
此
(?<!\n)(\n.*(ID)(?!\n.*(value2|value3).*)
有效,但仅当value2或value3位于行ID之前或之后的行中。
那么,如何查找行ID之前和之后的任何行?该解决方案应该适合单行代码,例如我上面的尝试。
答案 0 :(得分:0)
请更改标题,因为它会误导您,“ 从文本文件中获取ID ” 。
可能重复 Python - search txt.file for ID, then return variable from line below
编写记录时,您的文本文件应具有标准结构或格式。 @Blender在Writing a dict to txt file and reading it back中的解释 或使用字典格式可以帮助简化下次读取文件时识别ID和值的过程。
Nicely formatted text file,使用循环,然后读取每一行,然后执行split和dict。
注意:想要写评论,但声誉不够
答案 1 :(得分:0)
我相信
^(?![\s\S]*(value2|value3))[\s\S]*(ID)[\s\S]*
应该可以满足您的需求。
Python documentation on Regular expression operations包含有关\s
(与空白字符匹配)和\S
(与非空白字符匹配)的详细信息。
在此Stack Overflow帖子中,有很多关于负前行的信息-开头的(?!...)
位:Regex lookahead, lookbehind and atomic groups