如何在IntelliJ中用正则表达式搜索含两个短语的文件?
在IntelliJ中搜索同时包含两个短语的文件的解决方案
你之前用的
special property.*spin waves有两个问题:一是只能匹配**先出现"special property"、后出现"spin waves"**的内容,顺序反过来就找不到;二是默认情况下.不匹配换行符,两个短语不在同一行的话也会失效。要实现“同时包含两个短语、不限制顺序”的正则写法如下:
(?s)(?=.*special property)(?=.*spin waves)各部分作用:
(?s):开启单行模式,让.可以匹配换行符,支持跨段落/跨行匹配两个短语(?=.*special property):断言文件里存在"special property"这个短语(?=.*spin waves):断言文件里存在"spin waves"这个短语
两个断言同时成立,就代表文件同时包含两个目标短语,不管先后顺序。
注意在IntelliJ里的设置:
用Find in Path(快捷键Ctrl+Shift+F)功能时,要勾选搜索框下方的Regex选项,确保启用正则模式。更高效的非正则方案:
其实IntelliJ自带结果过滤功能,不用写正则也能快速拿到交集:- 打开
Find in Path,输入special property执行全项目搜索 - 在搜索结果面板右上角点击漏斗状的"Filter Results"按钮,选择"Search in Results"
- 输入
spin waves,就能直接筛选出同时包含两个短语的文件,速度比正则搜索更快。
- 打开
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

