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