2013-10-25 39 views
-1

之前substing我有一個刺:Java的正則表達式得到最後的報價

String text = "\"Alaska \"adaa\" asdas\" at [2013-10-298 13:36.062];"; 

我需要得到substing

//"Alaska "adaa" asdas" 
String text = "\"Alaska \"adaa\" asdas\""; 

如何?

回答

1

試試這個:

text.replace("\"[^\"]*$", "\"") 
+0

對不起,我的錯...糾正 – Axel

1

一種方式是最後一個引號後爲空字符串來代替一切:

test = test.replaceAll("(?<=\")[^\"]*$", ""); 
//      ^^^^^^^ ^^^^
//       |  | | 
// Preceded by a quote ----+  | | 
// Does not contain a quote -----+ | 
// Goes all the way to the end ------+ 
+0

是的,這個工程。謝謝。是一種不替代的能力,但用正則表達式的子串?因爲我將來需要這條線 – ovnia

+1

@wingsofovnia一種方法是將它存儲到另一個'String'中 - 比如'String dropTail = test.replaceAll(...)'。這會使原來的「測試」保持不變。 – dasblinkenlight

+0

@dasblinkednlight yep,但太簡單樸素了)謝謝,無論如何) – ovnia

2

爲什麼不直接使用lastIndexOf

text = text.substring(0, text.lastIndexOf("\"") + 1); 
+0

+1。這應該比正則表達式解決方案更快。 – Axel