在一定数量的字符后选择换行符的正则表达式

时间:2016-03-11 19:30:37

标签: regex

我正在寻找一个正则表达式字符串,用于选择跟随一定数量字符的每个换行符(在我的例子中为19)。

这将选择整行 - 但我只希望选择符合此条件的换行符:

.{19,}[^\n]

任何帮助都会非常感激(我显然不知道我对正则表达式的看法。)

基本上我要做的是搜索和替换文本编辑器,支持正则表达式以摆脱OCRd书中的换行符。我的一些启发式方法是,每个短于19个字符的行可能是段落(这是一本非常小的书)并且应该保持换行符,而所有其他行应该中断。

示例:

  1. 这是一个包裹
  2. 的行
  3. around
  4. 这个不是。
  5. 这里开始一个新的段落
  6. 应该取出1.之后的换行符,因此“around”这个词会向上移动。第3行之后的换行不应该因为它太短 - 所以不会取出到下一段(第4行)的过渡。

    我希望这有道理吗? (因为我没有使用编程语言,我假设/ K不起作用 - 至少它不在我目前使用的编辑器中。)

    谢谢!

1 个答案:

答案 0 :(得分:0)

regexp的一个非常有用的工具是正则表达式测试程序,例如Regex 101

通过这种方式,您可以看到正则表达式正在做什么。确保澄清你正在使用哪一个(我主要使用Ruby编程,这与其他一些编程有点不同)。

在你的,。{19,}中查找19个或更多字符,如果你想要19,请删除逗号。

.{19}

然后,因为你不想要那些19(或19加?)字符,你可以使用:

.{19}\K\n

\ K'忘记'到目前为止已经匹配的内容并从那一点开始。如果你的正则表达式允许它非常有用(如果我没记错的话,Ruby不会这么做吗?)如果你想要从行首开始使用19个字符:

^.{19,}\K\n

如果您想要所有匹配项,请不要忘记多行和全局选项。

demo

也!请务必阅读上面的Crayon Violent的评论,以获得更多好的建议(以及一个重要的Windows事实!)