摩纳哥编辑器未正确评估负先行正则表达式
Monaco-editor does not correctly evaluate negative-lookahead regex
我使用这个 ((?=(?!\bTODO\b)*?;).*)((?=.*?\bTODO\b).*)[^\n]
正则表达式在注释文本中查找 TODO,它是有效的 javascript 正则表达式,参见 this demo
但是当我使用
editor.getModel().findMatches("((?=(?!\bTODO\b)*?;).*)((?=.*?\bTODO\b).*)[^\s]", true, true, true, null, true);
它returns空FindMatch[]
。删除负先行 ((?=.*?;).*)((?=.*?\bTODO\b).*)[^\n]
它的行为正确,但它显然匹配无效行。
是monaco-editor的bug,还是我操作不对?
您可以使用
(;.*)(\bTODO\b.*)
参见regex demo。
详情
(;.*)
- 第 1 组:一个 ;
然后除换行字符外的任何零个或多个字符,尽可能多
(\bTODO\b.*)
- TODO
作为一个完整的单词,然后是除换行符以外的任何零个或多个字符,尽可能多。
我使用这个 ((?=(?!\bTODO\b)*?;).*)((?=.*?\bTODO\b).*)[^\n]
正则表达式在注释文本中查找 TODO,它是有效的 javascript 正则表达式,参见 this demo
但是当我使用
editor.getModel().findMatches("((?=(?!\bTODO\b)*?;).*)((?=.*?\bTODO\b).*)[^\s]", true, true, true, null, true);
它returns空FindMatch[]
。删除负先行 ((?=.*?;).*)((?=.*?\bTODO\b).*)[^\n]
它的行为正确,但它显然匹配无效行。
是monaco-editor的bug,还是我操作不对?
您可以使用
(;.*)(\bTODO\b.*)
参见regex demo。
详情
(;.*)
- 第 1 组:一个;
然后除换行字符外的任何零个或多个字符,尽可能多(\bTODO\b.*)
-TODO
作为一个完整的单词,然后是除换行符以外的任何零个或多个字符,尽可能多。