首页 > 解决方案 > 从相同的字符对之间的文本中去除字符串(使用正则表达式或其他方式)

问题描述

我有很长的文本文件(实际上是 .srt 字幕文件) - 不幸的是,其中包含许多不相关/分散注意力的信息。

所有不相关的文本都包含在相同的 pilcrow(段落)字符对中:¶

例如,一些文本看起来像这样:

这很重要,而¶junk垃圾垃圾垃圾¶我想保留它。

显然,我想删除 ¶ 字符之间的所有内容并保留其余部分。¶ 字符本身是否被剥离或保留并不重要:如果它们被保留,只需通过随后的搜索/替换直接删除它们就很简单了——所以我只需要最简单的模式匹配。

请注意,¶ 符号是成对出现的,因此它不像删除 [不对称字符] 之间的所有内容那么简单。

我没有在任何特定平台上工作。事实上,我希望使用一个基于 Web 的工具来做到这一点

我只需要正则表达式 - 如果有人可以提供帮助!或者,如果有比正则表达式更好的方法,我将不胜感激。

编辑:有人建议这个问题(删除字符串中分隔符之间的文本(使用正则表达式?))回答我正在寻找的内容。谢谢,但不幸的是它没有。这与在 C# 中使用它有关(我不知道),并且该问题的答案并没有准确解释如何复制我想要的。我希望它在我链接到的在线工具中工作。

更新:一个好的答案有效,但前提是不需要的文本出现在行内。我还需要它来删除不需要整行的文本:

779 00:35:52,216 --> 00:35:54,784

我已经很想他了。

780 00:36:00,291 --> 00:36:03,727

¶ 如果你需要某人 ¶

665

00:30:21,821 --> 00:30:25,589

¶ 感觉像

有时你想¶

因此,我想删除出现在 ¶ 符号之间的所有内容,无论它们在行中的哪个位置吸引,也无论是否存在换行符。

第二次更新 在接受的答案之后,它似乎并不完全有效。在此处的示例中,提供的正则表达式在第一个多行实例中不起作用。我不知道出了什么问题。我只是希望换行符(或任何其他字符)与考虑无关。该请求只是删除 ¶ 字符对之间的所有内容,无论它们出现在哪里,也不管它们之间还有什么。

最终(希望)更新

作为参考,感谢用户 MDR,我们有解决方案:(¶[\S\s]*?¶)

标签: regexstringtexttext-extraction

解决方案


由于有问题的新信息和此答案下方的评论而更新。

您引用的那个在线工具似乎可以提取文本(可能不是您想要的 - 您想删除找到的位)。也许改为使用具有查找和替换但带有正则表达式选项并查找...

(¶[\S\s]*?¶)

...并且什么都没有替换。演示:https ://regex101.com/r/4v9gXj/8


推荐阅读