我正在尝试匹配一个捕获松弛的正则表达式。我正在尝试匹配嵌套的markdown,例如*`这里的代码已合并*。我创建了此正则表达式,它使用了否定前瞻功能,但如果用户在此后键入其他内容然后键入不需要的字符,则否定前瞻功能仅工作一次:
(\*|_|`|```)(?!\1+)(\w+?)\1
因此此正则表达式将以任何字符* | _ |`|```开头并将其保存在捕获组中,然后它应该不与第一组中捕获的字符匹配,直到最后一个字符,但可以匹配其中的任何其他字符: 没关系:
*`asdfsdf`*
这不行:
*`asdf*asdf`*
*`asdf`asdf`*
所以我想要的是这样的:
(\*|_|`|```)[^\1]\1
,它匹配除第一个捕获组中捕获的字符以外的所有字符。这显然不起作用,因为set []不接受捕获组并将其解释为其他内容。 我希望这足够清楚。