在引号之间匹配/不匹配,并带有引号和多行

时间:2018-09-28 09:42:39

标签: c++ regex

所以我试图在C ++中拆分/,但这没关系。

我有这种正则表达式模式:

\/(?=(?:(?:\\.|[^"'``\\])*["'``](?:\\.|[^"'``\\])*['"``])*(?:\\.|[^"'``\\])*$)

它与不在{,1,}之间的/匹配,您可以转引号。

可悲的是,我不知道如何使其成为多行。我尝试将.更改为[^]并删除$,但这没有用。

这是我要实现的目标:

Inline code-匹配

  

/东西'/'。 。 。 '\'/ \''。 。 。 ''/''
  '
  /
  '/“ /”

1 个答案:

答案 0 :(得分:1)

您可以将所需的字符串与之匹配

(?:'[^'\\]*(?:\\[\s\S][^'\\]*)*'|"[^\\"]*(?:\\[\s\S][^"\\]*)*"|`[^\\`]*(?:\\[\s\S][^`\\]*)*`|[^/])+

请参见regex demo

详细信息

  • (?:-开始非捕获组匹配...
    • '[^'\\]*(?:\\[\s\S][^'\\]*)*'-单引号字符串文字(支持转义序列)
    • |-或
    • "[^"]*(?:\\[\s\S][^"\\]*)*"-双引号字符串文字(支持转义序列)
    • |-或
    • `[^\\`]*(?:\\[\s\S][^`\\]*)*`-用引号引起来的字符串文字(支持转义序列)
    • |-或
    • [^/]-除/之外的一个字符
  • )+ -...一次或多次。