如何在Typst中匹配尖括号内文本?正则匹配失效问题咨询
问题分析与解决办法
核心原因
你在Typst中使用的#show regex("<.*>"): highlight规则失效,是因为输入的内容被拆分成了多个独立的内容节点:
- 转义后的
<是单个字符节点 #lorem(10)执行后生成的是独立的文本节点- 转义后的
>是另一个单个字符节点
而Typst的#show regex()仅支持匹配连续的单个文本节点,无法跨节点组合匹配,因此你的正则表达式无法识别由多个节点拼接成的<#lorem(10)>内容。
可行解决方案
方案1:合并为单个文本节点(推荐)
将需要匹配的内容用双引号包裹,让<#lorem(10)>成为一个连续的文本节点,此时正则就能正常匹配并高亮:
#show regex("<.*>"): highlight "<#lorem(10)>"
方案2:多节点匹配高亮
如果必须保留原有的\<转义写法,可以通过选择器匹配<、中间任意内容和>的组合,实现整体高亮:
#show <|> + any() + <|>: highlight \<#lorem(10)\>
针对单个<20...>的匹配问题
如果你输入的是\<20...(即渲染后为<20...),但正则<20无法匹配,检查是否存在以下情况:
- 确认输入的
\<20...是否被拆分为多个节点(比如\<和20...是分开的),如果是,同样用双引号包裹成<20...单个文本节点即可。
内容的提问来源于stack exchange,提问作者K G
相关产品推荐
相关产品推荐

