正则表达式捕获文本,直到出现信号字

2024-04-19 18:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个正则表达式,它捕捉文本直到出现一个信号词。直到信号词不是第一个词,我的解决方案才能正常工作。因为我在正则表达式模块中使用python,所以代码是

new_text = regex.sub("^(?>.*\s)*?(?=SIGNALWORD)", "", text)

blabla blabla blabla
blabla blabla
SIGNALWORD blublub blublub
blublub blublub blublub
SIGNALWORD blabla blabla 
blabla blabla

变成

SIGNALWORD blublub blublub
blublub blublub blublub
SIGNALWORD blabla blabla 
blabla blabla

但是如果信号字是第一个字,它就不能正常工作。及

SIGNALWORD blublub blublub
blublub blublub blublub
SIGNALWORD blabla blabla 
blabla blabla

变成

SIGNALWORD blabla blabla 
blabla blabla

如果信号词是第一个词,我希望它什么也不做。我已经使用了regex.DOTALLregex.MULTILINE参数,但没有正面匹配


Tags: 模块代码text文本new参数信号解决方案
1条回答
网友
1楼 · 发布于 2024-04-19 18:33:55

您可以使用负的前向(?!SIGNALWORD)断言字符串不以SIGNALWORD开头

import regex

text = ("blabla blabla blabla\n"
            "blabla blabla\n"
            "SIGNALWORD blublub blublub\n"
            "blublub blublub blublub\n"
            "SIGNALWORD blabla blabla \n"
            "blabla blabla")

new_text = regex.sub("^(?!SIGNALWORD)(?>.*\s)*?(?=SIGNALWORD)", "", text)
print(new_text)

见第一次Python demo和第二次Python demo的结果

相关问题 更多 >