0

我正在解析文本,并且在换行符处拆分了文本。但是我需要保留一些换行符。幸运的是,所有这些换行符都以大写字母开头,并且前面没有句点。

查看其他操作系统的答案,我得到了.replace(/(?<!.)[A-Z]/, /\n$0/);哪些不起作用。

任何帮助表示赞赏。

例子:

亚当出去散步夏娃打了个盹。

进入

亚当去散步

夏娃打了个盹。

4

2 回答 2

1

您的代码中的问题:

  1. Javascript 不支持lookbehind.
  2. DOT 将不匹配换行符
  3. 替换参数是一个字符串

试试这个正则表达式:

.replace(/(^|[\s\S])([A-Z])/g, "$1\n$2");
于 2013-11-01T16:23:07.953 回答
0

我认为您想要的是这样的正则表达式:

replace(/([^\.])\n([A-Z])/g, "$1|$2")

它将用管道替换您要保留的新行。然后你可以在剩余的新行上进行拆分。然后将这些管道字符转换回结果中的新行。

为了说明,我在http://jsfiddle.net/tVR4b/上整理了一个 JSFiddle 。

根据原始海报的评论进行编辑

修改后的正则表达式将是:

.replace(/(\.)\n([A-Z])/g, "$1|$2");

修改后的 JSFiddle 位于http://jsfiddle.net/tVR4b/2/

于 2013-11-01T16:37:26.380 回答