Elisp regexp如何在换行符之后匹配文本?

问题描述

我有一个像这样的字符串

str="?tag0
1,2,3
4,5,6
?/tag0"

并且我想用\n?/tag0代替?/tag1?/tag2?/tag0

str="?tag0
1,6?/tag1?/tag2?/tag0"

喜欢

(setq s (replace-regexp-in-string "[ \n\t\r]*\?/tag0" "?/tag1?/tag2?/tag0" str))

解决方法

*表示零个或多个前面的模式。因此,这将在开头匹配,因为?tag0前的换行符为零。

使用+来匹配一个或多个模式。

要在正则表达式中添加文字\?,您需要转义反斜杠。

(setq s (replace-regexp-in-string "[ \n\t\r]+\\?/tag0" "?/tag1?/tag2?/tag0" str))
,
(setq s (replace-regexp-in-string "[ \n\t\r?/]*tag0" "?/tag1?/tag2?/tag0" str))