如何将纯文本表(+----+----+)的开头和结尾与regex匹配



pandoc导出的纯文本表如下所示:

+------+-------+
| x    | y     |
+======+=======+
| 1    | 4     |
| 2    | 5     |
| 3    | 6     |
+------+-------+

目标:找到这样的桌子并用"```"在表格前后的行中

```
+------+-------+
| x    | y     |
+======+=======+
| 1    | 4     |
| 2    | 5     |
| 3    | 6     |
+------+-------+
```

(我转义了"`",否则它会标记代码块边界并结束刚刚开始的代码块(

我可以用正则表达式^+.*+$找到水平单元格分隔符。

但我想我需要找到顶部和底部的一个,向前看,向后看,以检查下一行或上一行中是否存在+|的标记边界。但是,我不知道怎么做。有人有什么想法吗?

您可以尝试匹配:

+-++-++[sS]+?+-++-++

然后替换为:

`$&`

解释-所有加号:-(

+-匹配文字+

-+-匹配连字符-一次或多次

+-匹配文字+

-+-匹配连字符-一次或多次

+-匹配文字+

[sS]+?与任何字符匹配一次或多次(非贪婪=尽可能少(-这包括换行

+-匹配文字+

-+-匹配连字符-一次或多次

+-匹配文字+

-+-匹配连字符-一次或多次

+-匹配文字+

现在用反勾代替整个比赛

global标志设置为全部替换。

您还没有说明使用的是什么编程语言
填充示例适用于Python
Regex Pattern,使用标志s.中包含换行符
由于标题行以行^的开头开始,而页脚行以行结束$结束,因此我们不会有任何问题
我禁用了字符串-+-,以避免在同一页上有两个表的情况下,一次捕获两个表,所有内容都在其间。

"^(+(-++)+((?!(-+-)).)*+(-++)+)$"gms

替代

```n1n```

请参阅https://regex101.com/r/PslCIX/2

相关内容

最新更新