我有一个文件test.txt,其中包含以下内容:
CAR
one a. , z.
two b.
three c.
AIRPLANE
one a. , z.
two b.
three c.
BOAT
one a. , z.
two b.
字符串
我想提取从CAR到AIRPLANE(但不包括AIRPLANE)的所有内容,并将其写入output.txt。这个正则表达式为我提供了捕获组中所需的一切:r"(CAR.*)AIRPLANE"s
. link:https://regex101.com/r/QJMJFh/1
为了测试我的输入test.txt正在进入程序,我这样做:
s = open('test.txt')
s_content = s.read()
print(s_content)
型
它成功并产生以下结果:
CAR
one a. , z.
two b.
three c.
AIRPLANE
one a. , z.
two b.
three c.
BOAT
one a. , z.
two b.
型
但是,当我运行这个:
s_output = re.search(r"(CAR.*)AIRPLANE"s, s_content).group(1)
print(s_output)
型
它失败了,说
Cell In[85], line 4
s_output = re.search(r"(CAR.*)AIRPLANE"s, s_content).group(1)
^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
型
我还能如何使用re模块从这个文件中提取一个捕获组?
This question非常相似,实际上我用它作为我代码的基础。然而,我的正则表达式与那个例子中的不同,并且在re.search上需要不同的标志。
1条答案
按热度按时间8aqjt8rx1#
如果你想在dot all模式下运行正则表达式,那么你应该在调用
re.search
时使用flags
选项:字符串
还请注意,我在这里使用了lazy dot,在第一次出现
AIRPLANE
时停止。更一般地说,你可能想使用这个版本,它在最近的AIRPLANE
出现或输入结束时停止,以先发生的为准:型