javascript正则表达式匹配char,如果不在markdown代码块内

时间:2018-05-30 12:48:02

标签: regex regex-negation regex-lookarounds

我正在试图弄清楚如何匹配不在降价代码块之间的所有char '。使用VSCode扩展名regreplace

VSCode似乎使用Javascript正则表达式。

例如:

match this one '

```
don't match this
```

match this as well '

```
not this one '
```

yes to this one '

`not this ' one`

目标是用 char

替换匹配的匹配项

目前我有这个正则表达式:

(?:(?!`[.\n]*?'))(')[.\n]*?(?!`)

匹配所有'甚至代码块中的那些。

1 个答案:

答案 0 :(得分:1)

您可以将此作为最后的手段 它找到一个',它位于任何偶数代码分隔符集之前 这意味着它在外面,而不在里面。

我说这是最后的手段,因为这是一种效率低下的方法 但是,如果块的数量不是那么大,那就太糟糕了。

查找:

'(?=[^`]*(?:`[^`]*`[^`]*)*$)  

替换:

示例:https://regex101.com/r/gdkvdq/1

可读版本:

 ' 
 (?=
      [^`]* 
      (?:
           ` [^`]* ` 
           [^`]* 
      )*
      $ 
 )