拆分文本的正则表达式

Regular Expression to Split Text

我正在尝试将文本(国际象棋符号)拆分为每一步的单独行。如果白方下手,则一手是手数 (1.) 和手 (e4),如果黑方下手,则只是手 (c5)。 这就是我的例子:

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 
Nf6 5. Nc3 a6 6. h3 e5 7. Nde2 h5 8.
g3 Be6

这是我正在寻找的输出:

1. e4
c5
2. Nf3
d6
3. d4
cxd4
4. Nxd4
Nf6
5. Nc3
a6
6. h3
 e5
7. Nde2
h5 
8. g3
Be6

我在寻找匹配第一部分的模式方面取得了一些进展,但我不确定如何进行实际拆分。在极少数情况下,我的模式的一部分在一行中,其余部分在下一行中,例如8.[此处换行]g3 而不是 8。我会匹配的 g3

[0-9]+\.\s?[A-Za-z0-9]+

这与着法编号、点、space 和实际着法相匹配。但是后来我想替换下一个 space 而不是实际的字符串。对于黑步,我正在尝试这个

[^0-9][^.][A-Za-z0-9]+

但它一直匹配 。 e4(白棋),不仅黑棋走 c5.

好像数字后面有一个点,总有两个“字”。捕获它们并根据需要重新格式化匹配项:

查找内容(\d+\.)\s+(\w+)\s+(\w+)\s*
替换为 \n\n

详情:

  • (\d+\.) - 第 1 组 (</code>):一个或多个数字和一个 <code>.
  • \s+ - 一个或多个空格
  • (\w+) - 第 2 组 (</code>):一个或多个单词字符</li> <li><code>\s+ - 一个或多个空格
  • (\w+) - 第 3 组 (</code>):一个或多个单词字符</li> <li><code>\s* - 零个或多个空格

查看演示截图:

我通常使用这个正则表达式代码来设置它。

查找:.(\d+\.)(?=[\w]*) ?\n?
全部替换:\n

结果见下方附件