如何在Eclipse中找到仅以空格开头的标识符?

How to find an identifier in Eclipse that's only preceded by white space?

提问人:sbi 提问时间:6/25/2014 更新时间:6/25/2014 访问量:144

问:

使用Eclipse,我想找到一个标识符,其中它前面除了空格之外没有任何内容:

ident                // match
  ident              // match
    ident            // match
//  ident            // no match
  //ident            // no match
blah_ident           // no match

我已经管理了()。但是,这也捕获了前面的空白,这不是我想要的。(特别是因为它还捕获了前面的空行。^[\s]*ident

在 Eclipse 中,如何找到前面有空格的标识符,同时又不捕获空格?

正则表达式 Eclipse

评论

0赞 arshajii 6/25/2014
您是否正在尝试执行替换?
0赞 sbi 6/25/2014
@arshajii:最终,我可能会。现在主要是求知欲。
0赞 hwnd 6/25/2014
如果我理解正确,请使用前瞻来消费和捕获。^(?=(ident)|\s+(ident))
0赞 sbi 6/25/2014
@hwnd:这在 Eclipse 中找不到任何东西。

答:

2赞 Casimir et Hippolyte 6/25/2014 #1

一种方法是在替换字符串中使用捕获组和引用,以在之前使用空格:$1ident

search:    ^(\h*)ident 
replace:   $1WhatYouWant

另一种方法是使用后视功能(似乎支持 Luna 中的可变长度子模式):

search:   (?<=^\h*)ident
replace:  WhatYouWant

评论

0赞 sbi 6/25/2014
这不会捕获前面的空行,但会捕获其他空格。ident
0赞 Casimir et Hippolyte 6/25/2014
@sbi:如果要捕获前面的空行,请替换为 .我曾经避免这种情况。\h\s\h
0赞 sbi 6/25/2014
你的第二个想法对我大喊大叫。(当我使用 时,这种情况会消失,但这需要很长时间,并且似乎错过了发生。而且我不想捕获前导空格,既不想换行符,也不想捕获其他任何东西。Illegal/unsupported escape sequence near index 6\s
0赞 Casimir et Hippolyte 6/25/2014
@sbi:这两种模式在 Luna 中效果很好。而这两种解决方案是匹配并确保它不被评论的唯一方法。第一种模式是更“便携”的,如果你的 eclipse 版本太旧,请替换为 .ident\h[^\S\r\n]
0赞 sbi 6/25/2014
好的,搜索结束了。搜索花了很长时间(将近 10 分钟,而其他模式在 <5 秒内完成),但它确实找到了所有事件并且只捕获了,所以这就是我所追求的。谢谢!(?<=^\s*)identident