排除注解regex在Visual Studio 2017中不工作查找

fkvaft9z  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(131)

根据this文档,regex方法从2010年变更为2012年。
使用下面的Regex,我可以排除VS2010中所有的注解,用于所有情况

^~(:b*').*your_search_term.

但是当我们尝试下面的正则表达式(在文档中建议的更改之后)时,我能够从Visual Studio Find的搜索结果中排除注解,但仅限于某些情况。

^(?![ \t]*[']).*your_search_term.    
^(?!(\s*')).*your_search_term.
^(?!(?([^\r\n])\s)*').*your_search_term.

当注解与代码在同一行时,上述Regex会失败。

ex: Try  ' On Error GoTo test_EH

有没有办法通过使用Visual Studio 2017 Find排除所有注解来查找?
编辑:我们检查过的正则表达式为:

1. when comments are in the same line as code.
   ex: Try  ' On Error GoTo test_EH

2. When only Comment present in a line
   ex: 'On Error GoTo test_EH

3. When there are words within ' ' in code
   ex: Dim str1 As String = " 'test_EH' "

编辑:
修改Link中提到的正则表达式,我可以检测到项目中包含测试单词的所有注解。

(?mn)^(?<line>[^\r\n"']*(("[^"]*")[^\r\n"]*)*)(')[^\r\n]*test[^\r\n]*

但是否定该正则表达式以排除注解也将排除以下情况:

Dim test a string 'this is test example

如何修改此正则表达式以正确地排除注解?

s4n0splo

s4n0splo1#

我不熟悉旧语法,但根据您的要求,可以构建一个新的正则表达式,例如:

(?:^\s*|\s+)'(?!.*').*test_EH

基本上,这将匹配任何:

  • '开头的行
  • 以一个'开头的文本结尾的行

在这两种情况下,只允许1个',并且还必须找到文本test_EH

DEMO:

https://regex101.com/r/wj7M9t/1
如果需要,请提供更多细节/示例以进行微调

4uqofj5v

4uqofj5v2#

我合并并创建了www.example的正则表达式 www.example.com 语言,适用于VS2017中的所有上述情况。
Regex:

(^(?!.*').*mexico)|((\"(.*(mexico).*)+?\")|('(.*(mexico).*)+?'))

相关问题