正则表达式如何匹配单次出现的字符 排除连续重复同字符场景
行首单个反引号行匹配正则方案
通过负向先行断言即可实现匹配规则,直接排除连续多反引号开头的行:
- 推荐正则(需开启多行匹配模式
m标志):
^`(?!`).*$
- 语法说明:
^:多行模式下匹配每一行的起始位置`:匹配行首第一个反引号字符(?!)`:负向零宽断言,校验第一个反引号的下一个字符不能是反引号,直接过滤掉2个及以上连续反引号开头的行,自然排除```开头的行.*$:匹配当前行反引号之后的所有内容直到行尾
- 边界适配方案:
- 如果你不需要匹配「行首只有单个反引号、后面没有任何内容」的空行,可以把正则里的
*替换为+,即^(?!).+$,要求反引号后至少存在1个非换行字符 - 如果你使用的工具不支持零宽断言,可以使用兼容写法:
^[^].*$,这个写法要求反引号后必须紧跟一个非反引号字符,同样可以排除连续反引号开头的行,只是无法匹配单个反引号后直接换行的场景
- 如果你不需要匹配「行首只有单个反引号、后面没有任何内容」的空行,可以把正则里的
- 效果验证:
对测试文本执行匹配:
最终只会命中`single所在的行,其余行均不会被匹配。```triple `single ``double 普通文本行
内容的提问来源于stack exchange,提问作者x300n
相关产品推荐
相关产品推荐

