【解答合集】批量添加删除修改查找替换

其实这种编号不属于 md 语法规范,对于md编辑器来说只是一串普通的文本,和别的字符串是没有区别的,所以编辑器层面没法识别和处理。

至于自动化完成自定义块id这个倒是很简单,使用正则表达式就可以。

正则表达式,我不会,能帮助我吗? 或者我能在里学到。谢谢!
另外,如果,我发现条文中某个字错了,改正后,这个id是不是会失效呢?自动生成的块代吗,是会失效的。
也许,将条文编号直接自动变成标题,会更好。

首先说说改字的问题。ob中的块指的是被两个空行包裹起来的元素,比如段落、表格等等。所以,当我们引用块的时候,实际上是在引用一个特定的位置,而不是特定的字符串。因此只要块id不变,我们就能找到这个位置,而不论位置上的文字是否改变。

再说下正则表达式。正则表达式可以搜索特定模式的字符串,并将其替换成其他模式。这里我们要做的是找到每条条文,并用条文开头的编号转换成自定义块id放在条文所在段落的末尾。通过正则表达式,可以把(数字.数字.数字)(若干空格)(若干中英文字符)这样的条文合适转换为(数字.数字.数字)(若干空格)(若干中英文字符)(空格)(^)(数字-数字-数字)这样的模式。

由于无法看到具体文本,以上只是思路,具体的表达式还需你基于实际情况来调试。不会的话可以去网上搜教程或者看《正则表达式必知必会》这种教材。

1 个赞

Ryooo:非常感谢!

新手請教
早上好
我有一些文字,想在其他的編輯程式,用正則表達式先做文字整理後, 加上(換行符),再貼到Ob內
試了 <cr> <br\> \n 2個空白 都無法成功。

請問有人知道(換行符)是什麼嗎? 謝謝

(換行符)https://www.youtube.com/watch?v=7ZTC6MahF6\(換行符)

直接粘贴进去的话,应该什么符号都会变成文本吧。

不过好在 MD 是纯文本,就用纯文本的处理方法就行了。

比如你可以在链接之间添加一个不常见的字符,比如 ,然后用 Word 打开这个 MD 文件,在 Word 中把这个字符替换为换行符。

示例 GIF,点击展开

20240107_160915

1 个赞

PlayerMiller您好,(第)一句話就突破盲點了,感謝您^^


遇到的问题

相信大家都遇到从pdf等途径粘贴文字到ob中,但是会遇到一行不满自动换行或者字间存在空格的问题。在word中尚且可以用替换的方式快速解决。ob中这个问题该如何解决呢?

如果你word能替换解决的话,ob也有搜索替换功能
不过我一般都是用中键多重光标来解决异常换行问题,行中空格的话就一个个删了,不知道有啥好的方案 :smiling_face_with_tear:

查找替换也可以用来删除所有空格,替换不填任何东西就行。
增强编辑插件可以修复意外断行和删除多余空格,还有很多处理空格空行语法标点之类的功能,我觉得蛮实用的。
之前也看到过支持正则查找替换的插件(忘记名字了),用 vscode 也成 :joy:

1 个赞

问题的关键就是ob中的替换功能太过鸡肋,不能局限于一段替换

用清除空格的在线网站,一键清除后再粘贴过来http://www.esjson.com/delSpace.html

1 个赞

可惜的就是在ob中替换空格的就会对整个笔记而不是一段文字。

quicker动作“去空格粘贴”,一键完成。 :smirk_cat:

1 个赞

谢谢,这就去尝试

大部分情况下, 最省心方案可能是换 pdf 阅读器, 比如从 Chrome 打开 pdf, 粘贴就没断行

如果确定要处理断行, 除了楼上的方案, 还有 obsidian-linter 和 obsidian-regex-pipeline
linter 只能对全文, regex-pipeline 可以对指定选中文字
这俩都需要自己写替换规则, 麻烦, 但可以实现更精细控制:

  • 中文断行直接连起来
  • 英文, 中英混排, 标点的断行连起来后, 要补空格
  • 英文行尾连字符要去掉
  • 如果以标点结束, 不动它, 保持换行

我已经使用效率工具quiker来解决 此问题,非常方便

1 个赞

如题,obsidian搜索是否支持正则表达式?

谢谢大噶!

本身是不支持的。可以使用插件或者VS以及其他可以支持正则的工具。

1 个赞

需要插件支持, regex find/replace, regex pipeline, apply patterns等等

2 个赞