正则表达式在“查找”中工作但不在“在文件中查找” - 为什么?怎么修?

时间:2017-10-20 14:49:27

标签: visual-studio-code

来自a previous question我有这个很好的正则表达式:

\[.*\]\((?!http)(?!.+\.md).+\)

它匹配具有.md文件扩展名的所有内部 Markdown链接。你可以在这里看到它的一些匹配:https://regex101.com/r/0uW1cl/6

这个正则表达式在打开的文件中通过编辑工作得很好 - >在查找输入字段中启用“使用正则表达式”时查找(或Ctrl + F)。

enter image description here

但它在编辑中不起作用 - >在文件中查找功能:

regex does not work in the Edit -> Find in Files functionality

正如您在屏幕截图中看到的,它给了我一个很好的错误消息:

  

在`] \((?!http',字符偏移9:无法识别的标志:'!')下解析正则表达式时出错。(允许标志:i,m,s,U,u,x。)   块引用

据我所知,那些在幕后使用相同的代码来执行正则表达式搜索。

为什么它在“查找”中有效,而不是“在文件中查找”? 有没有办法解决这个问题或解决方法?

(目前我正在使用Notepad ++,这似乎处理这个正则表达式,但我当然希望继续在VS Code中工作)

1 个答案:

答案 0 :(得分:0)

  

据我所知,那些在幕后使用相同的代码来执行正则表达式搜索。

是的,我不应该假设这样的事情:

  
      
  • 查找/替换文件边栏中的Rust Regex
  •   
  • “文件小部件中的查找/替换”中的JavaScript正则表达式
  •   

通过https://stackoverflow.com/a/42184299/252627

Rust Regex无法处理负面前瞻,因为它根本不支持外观:

  

它的语法类似于Perl风格的正则表达式,但缺少一些功能,如环顾四周和反向引用。作为交换,所有搜索都在相对于正则表达式和搜索文本的大小的线性时间内执行。

https://doc.rust-lang.org/regex/regex/index.html