2014-05-18 43 views
1

我有一個文本,同時顯示某些輸出的字符串和數字的形式,並從那裏我有一個特定的文本如下。我想提取一段文字這使用正則表達式提取字符串的特定模式

這是一小塊我的內容

gjhsgdjhgfjhdgfjkhsdgfjkhgsdfk7868736876534 
Pattern is: 
(4,24,[5,96]) -> (1,14,[14,15]), that is: "Poland" -> "Poland" 
(4,46,[36,39]) -> (1,14,[14,15]), that is: "Kim" -> "Kim" 

fhafsdhjdfgjhdagfkhj66876493985694(hjiikfghkjfhg,98698) 
(hhgjhgdfj,jhgkjdhgf) 

從此我想要得到的輸出

"Poland" -> "Poland" 
"Kim" -> "Kim" 
"The police" -> "The city police on Friday" 

我試過的代碼

Pattern p = Pattern.compile("(Pattern is:)\\((.*?)\\)"); 
    Matcher m = p.matcher(str); 

    while(m.find()) 
    { 
     System.out.println("fhkjsdfhkjsdh"); 
     System.out.println(m.group(2)); 

    } 
+0

@ user3580294「模式是:」是我要提取的文本片段。我的文本文件包含單詞「模式是」,我想在此之後提取內容 – chopss

+1

「星期五」去哪兒了? –

+0

@UlugbekUmirov發現我的錯誤。我編輯了我的問題 – chopss

回答

1

您可以使用此:

Pattern p = Pattern.compile("\"[^\"]+\"\\s*->\\s*\"[^\"]+\""); 

利用總體匹配。

參見demo

的形式"Poland" -> "Poland"的字符串表達只檢查,而不會打擾檢查Pattern is任何地方匹配,因爲(i)在不似乎所需的輸入,以及(ii)它是不明什麼構成模式部分的結尾分隔符。

讓我們知道這是否是你想要的。

+0

非常感謝zx81。它工作得很好+1回答這個問題.. – chopss

+1

很高興它的工作原理,謝謝你讓我知道。順便說一句,這不是hwnd,雖然我相信他會產生一個很好的答案。 :) – zx81

+0

哦sry zx81 ..我的錯誤 – chopss

0

試試這個:

String newStr = str.replaceAll("^.*:", ""); 
System.out.println(newStr); 
+0

謝謝你回答和關注我的問題。但它不是我需要的輸出 – chopss

相關問題