2011-02-09 42 views
4

讓我們假設我有以下的Java代碼:Eclipse是否可以在字符串文本中查找結果?

public String foo() 
{ 
    // returns foo() 
    String log = "foo() : Logging something!" 
    return log; 
} 

我可以在Eclipse中搜索foo()只在一個字符串字面發生,但不是任何其他地方的代碼?所以在這個例子中,Eclipse應該只能找到第三個出現foo(),而不是第一個,這是第一個函數名,而不是第二個,這是一個註釋。

編輯:簡單的正則表達式將無法正常工作,因爲他們會發現foo()在這行

String temp = "literal" + foo() + "another literal" 

但這裏foo()是一個函數名,而不是一個字符串。

回答

2

,您可以嘗試這樣的:?

"[^"\n]*foo\\(\\)[^"\n]*" 

你要逃避括號,加上此正則表達式不匹配新行或附加引號,以防止錯誤匹配。

+0

我想你的意思是``[^「\ n] * foo \\(\\)[^」\ n] *「`。這是迄今爲止最好的正則表達式。但它會在'String log =「bla」+ foo()+「blabla」``行中找到匹配,其中`foo()`是一個函數名。它也會匹配字符串註釋中的字符串,如`//返回String「foo()」`。 – asmaier 2011-02-10 10:34:28

1

也許你應該使用正則表達式找到兩個「之間FOO()的任何occurence

+0

我不喜歡正則表達式,所以我只會這麼說: (0或更多((「))(0或更多(任何字符))(one「)))(one」)(0或更多(任何字符,但是「))(foo())(0或更多(任何字符,但是」))(one「) – 2011-02-09 15:31:10

相關問題