我正在編寫一個方法,應該從中提取完全限定的類名稱java.lang.reflect.Method - 目的。因爲我無法找到任何方便的方法得到一個方法對象的類名,我試圖用下面的正則表達式,則表達式來提取它:從具有或不具有正則表達式的java.lang.reflect.Method對象中提取完全quallified類名
([A-Za-z.]*)[\(]
(也許有還沒有一個正則表達式的方法嗎?) 。
public String getFullClassName(Method method) {
// Example methodname:
// public void com.test.user.impl.UserServiceImpl.deleteUser(java.lang.Long) throws com.test.user.api.exception.UserServiceException
String methodName = method.toString();
Pattern p = Pattern.compile("([A-Za-z.]*)[\\(]");
Matcher m = p.matcher(methodName);
String result = "";
while (m.find()) {
result = m.group();
}
return result;
}
不幸的是,我構建的正則表達式無法正常工作,因爲它給了我兩個結果組,但它應該只給我一個組。當我打電話的方法,該方法
public void com.test.user.impl.UserServiceImpl.deleteUser(java.lang.Long) throws com.test.user.api.exception.UserServiceException
,我得到兩個匹配組:
Group(0) = com.test.user.impl.UserServiceImpl.deleteUser(
Group(1) = com.testuser.impl.UserServiceImpl.deleteUser
所以該方法返回的第一組「com.test.user.impl.UserServiceImpl.deleteUser(「,但它應該是」com.test.user.impl.UserServiceImpl.deleteUser「。我不想手動選擇組,但我想要一個正則表達式應該已經給我一個匹配組。與我的正則表達式?
該死的......我發誓我也試過,沒有成功;)但知道它的作品。無論如何,如果任何人也有我的正則表達式的修復它會沒事,只是要知道我會寫一個匹配的正則表達式,當沒有便利的方法 – ifischer 2010-09-21 10:23:17
謝謝。當然,我現在不使用正則表達式。但是必須有一個更好的正則表達式,它只給我一個組(沒有左括號)? – ifischer 2010-09-21 10:48:06
你可以嘗試Pattern.compile(「([A-Za-z。] *)」),但它也會給java.lang.Long和com.test.user.api.exception.UserServiceException – nanda 2010-09-21 10:56:37