2013-06-27 55 views
0

我需要一個正則表達式來獲取最後一次出現的.java; [數字]或java; NONE和字符串結尾之間的文本。Java最後一次發生的正則表達式直到字符串結尾

以下是文字的一個例子,我有作爲輸入:

user: ilian 
branch: HEAD 
changed files: 
FlatFilePortfolioImportController.java;1.78 
ConvertibleBondParser.java;1.52 
OptionKnockedOutException.java;1.1.2.1 
RebatePayoff.java;NONE 

possible dead-lock. The suggested solution is to first create a TransactionContext and then lock AccountableDataFactory.IMPORT_LOCK and PositionManagerSQL 

基本上我需要在提交的結束,這是最後更改的文件後,它可以在類似最終拿到評論1.52,1.1.2.1或NONE。

+0

如果您明確地說出示例輸入中的輸出應該是什麼,那麼問題會更加清晰。 –

+0

@JiriKremser我認爲它從「可能的死鎖」直到輸入結束。我一開始也很困惑,不得不改變我的答案,因爲我的OP意圖提取版本號(!)... – Mena

回答

0
String comment = mydata.replaceAll("(?s).*java;[0-9,.]+|.*java;NONE", ""); 
System.out.println(comment); 

適用於所有的文件結尾和打印正確。

0
String regex = "\\.java;\\d+\\.\\d+(.+)"; 
Pattern p = Pattern.compile(regex, Pattern.DOTALL); 
Matcher m = p.matcher(input); 

if (m.find()) { 
    System.out.println(m.group(1)); 
} 
0

被修改 解假定輸入是在一個單一的線(在原始訊息僅僅是爲了清楚的線條,見下文OP的評論)。

String input = "user: ilian branch: " 
     + "HEAD changed files: " 
     + "FlatFilePortfolioImportController.java;1.78 " 
     + "ConvertibleBondParser.java;1.52 " 
     + "possible dead-lock. The suggested solution is to first create a " 
     + "TransactionContext and then lock AccountableDataFactory.IMPORT_LOCK " 
     + "and PositionManagerSQL"; 
// checks last occurrence of java;x.xx, optional space(s), anything until end of input 
Pattern pattern = Pattern.compile(".+java;[\\d\\.]+\\s+?(.+?)$"); 
Matcher matcher = pattern.matcher(input); 
if (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

輸出:

possible dead-lock. The suggested solution is to first create a TransactionContext and then lock AccountableDataFactory.IMPORT_LOCK and PositionManagerSQL 
+0

輸出是在一行中,所以\ n不起作用。 我需要左邊是類似.java;(十進制)的最後一次出現,之後出現<我想要的東西>,右側應該是(輸入結束),如果我是我沒有錯。 – Schadenfreude

+0

@ user2528840明白了。看我的編輯。 – Mena

相關問題