2

是否可以在 Sublime Text 2 中搜索包含'Mickey'

但不包含'Mouse'.

可能是正则表达式?但他们会是什么?

4

3 回答 3

7

是的,您可以使用正则表达式来执行此操作,使用负前瞻表达式

打开搜索Ctrl-Shift-F

确保您使用正则表达式进行搜索Alt-R

Mickey(?! Mouse)

将返回所有Mickey未跟随 ' Mouse'的 ' ' 实例

注意确保您包括前面的空格 Mouse

于 2013-07-03T14:55:01.420 回答
2

您使用这个特定的文本编辑器这一事实真的很重要吗?就个人而言,我只是使用 grep 来完成。就像是:

grep -l Mickey filename | xargs grep -L Mouse

解释:

-l 选项的意思是“打印包含匹配的文件名,而不是匹配的行”。

xargs 将这些匹配的文件名传递给下一个 grep 命令。

-L 选项的意思是“打印不包含匹配的文件名,而不是匹配的行”。

然后,您可以同时在多个文件上运行此命令 - 可能通过在第一个 grep 中添加 -r(“递归”)选项。

于 2013-07-03T14:46:27.963 回答
1

我尝试了提供的正则表达式Smandoli,但它实际上崩溃了Sublime Text 2

也许这是Sublime我添加的插件之一的问题,我根本不知道。

我想用来Sublime进行搜索的原因是我正在处理一个包含一千多个文件的相当大的项目。所以我想在项目中搜索包含特定字符串('Mickey')的文件。如有必要,编辑文件并添加单词 Mouse。然后我可以“刷新”搜索,现在将忽略我刚刚编辑的文件,因为它不再符合搜索条件。它是一个合理的工作流程。

    Note: The strings are not actually Mickey and Mouse, I just used those to illustrate 
the problem. I don't work for Disney :)

因为crashed我也尝试了(I'm running on )regex提供的命令,但看不到只针对具有特定扩展名 ( )的文件的方法SmandoliSublimegrepTom LordWindows 7*.asp

Powershell最后,我写了一个似乎可以解决问题的小脚本:

Get-ChildItem -recurse | Where-Object {$_.FullName -like "*.asp"}
    ForEach-Object { if( ( $(Get-Content $_) |
                            select-string -pattern "Mickey") )
                     { $_.PsPath }} | Get-ChildItem |
    ForEach-Object { if( !( $(Get-Content $_) |
                            select-string -pattern "Mouse") )
                     { $_.PsPath }}
于 2013-07-05T09:52:34.937 回答