Notepad++:使用正则表达式彻底删除包含问号的行

5

嗯,我想这个标题已经很明确地说明了我的目标。

以下是我的文本文件示例:

"Diva" was the winning song of the Eurovision Song Contest 1998.
Who will win Eurovision Song Contest 2015?
Eurovision Song Contest Statistics:
Who will win Eurovision 2015?

这是我想要获得的内容:

"Diva" was the winning song of the Eurovision Song Contest 1998.
Eurovision Song Contest Statistics:

基本上,每一行包含?字符的行(位置不一定在行末)将被替换为空。

我尝试使用[^\r\n]*?[^\r\n]*([\r\n]+|$),但它删除了太多内容。

4个回答

3

2
您可以使用正则表达式[^\r\n]*\?[^\r\n]*([\r\n]+|$)来匹配包含?符号的行。请标记. matches newline
将其替换为空字符串。 enter image description here

哎呀...这正是我正在做的事情,我只是忘记了反斜杠\?非常感谢! :) - Hezi-Gangina
@Hezi-Gangina:不用谢。?是正则表达式中的特殊字符,当你搜索字面上的?时必须进行转义。如果你感兴趣,这里有更多需要转义的特殊字符信息:https://dev59.com/CHRC5IYBdhLWcg3wJNgN。 - Wiktor Stribiżew
我还在问题中添加了一个细节,即您尝试使用未转义的问号正则表达式。这很重要。 - Wiktor Stribiżew

2
为了处理任何换行符:
查找内容:^.*\?.*(\R|$) 替换为: \R代表任何换行符,即\r、\n和\r\n。
请确保勾选了正则表达式,未勾选“点号匹配换行符”。

2
您可以避免使用正则表达式,而是使用“查找”窗口的“标记”选项卡。选择“搜索模式”为“普通”,还要选择“书签行”。将“查找内容”设置为?,然后单击“全部标记”。接下来使用菜单=>“搜索” =>“书签” =>“删除已标记的行”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接