如何用Regex匹配未嵌套在三重反引号内的单反引号包裹内容
单反引号包裹内容匹配正则方案
核心需求
匹配仅被单个反引号包裹、且未嵌套在三重反引号代码块内部的文本内容。
可用正则表达式
/(?<!`)(`(?!`)[^`]*`)(?!`)(?=(?:[^`]*```[^`]*```)*[^`]*$)/gm
规则说明
(?<!)`:负向后顾断言,排除当前位置前存在反引号的场景,避免匹配到多反引号结构的组成部分(?!)`:负向前瞻断言,确保单个反引号后没有紧跟其他反引号,进一步过滤多反引号结构[^]*`:匹配两个单反引号之间不含反引号的所有内容- 末尾的正向前瞻断言
(?=(?:[^][^`]*)[^]*$):校验当前匹配的单反引号对位于偶数个三重反引号之外,即不在任意三重反引号包裹的代码块内部
效果验证
可匹配场景:
I should be matched→ 正常命中目标内容
不可匹配场景:`Hello world`→ 代码块内部的单反引号内容不会被命中
内容的提问来源于stack exchange,提问作者mksjohari
相关产品推荐
相关产品推荐

