【问题标题】:Remove Double Line Spaces With A Special Symbol @删除带有特殊符号 @ 的双行空格
【发布时间】:2021-09-11 19:44:47
【问题描述】:

我有翻译工具,翻译输出必须与原文件的行号一致,否则无法保存。

我的网络翻译器弄乱了换行符。现在我已经设法用两个换行符分隔所有句子。

现在我需要帮助将双线替换为特殊的@符号以进行进一步处理。

样本数据:

Translated data line 1

Translated data line 2

Translated data line 3

Translated data line 4

在每行之间,甚至包括最后一行(第 4 行),它们都跟在双行空格(2 个换行符)之后。

可以把上面的变成下面的吗?

Translated data line 1@
Translated data line 2@
Translated data line 3@
Translated data line 4@

我的自动化工具具有搜索和替换功能。 在我在这里发布寻求帮助线程之前,我确实检查了这个: Matching double line breaks using Regex

RegEx 代码似乎不适用于我的目的。 /[\r]?\n[\r]?\n/g

提前致谢!

【问题讨论】:

  • 这在很大程度上取决于您使用的软件,这是否可行。尝试将(?:\r?\n){2} 替换为@\n,参见this regex demo
  • 谢谢,它有效!另外,如果我想知道,而不是用@符号替换。无论如何,是否使用正则表达式根据它们由双换行符分隔的模式来获取每一行?
  • 要匹配它们,请尝试^.*(?=(?:\r?\n){2})。见this regex demo

标签: regex text


【解决方案1】:

你可以使用

(?:\r?\n){2}

匹配项需要替换为@\n。请参阅regex demo

还有一个技巧可以避免在替换中使用 \n:使用 capturing 组,然后在替换中使用 \1 / $1 而不是 line free char

(\r?\n){2}

this regex demo

【讨论】:

  • 感谢您的提示和演示。查找和替换现在可以了。如何直接获取反转部分?像这个正则表达式RegEx Demo 如何让它选择由两个换行符分隔的所有文本? Screenshot
  • 我确实按照@Wiktor Stribiżew 的建议尝试了这段代码,但它也匹配空行,也匹配 #7 和 #8 应在一行中,这是因为它是一个带有 1 个换行符的段落. RegEx - Match Line
  • @stackmike 不能将两行捕获到一个组中,因为您不能在单个匹配操作中删除/跳过部分字符串。
【解决方案2】:

您的模式[\r]?\n[\r]?\n 有效,您只需在替换中使用@\n

›查看regex demo中的替换。

注意您不需要方括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多