2011-03-25 51 views
2

正則表達式我解析一個文本文件,我需要刪除所有術語,這樣的:問題有關使用Java

upcoming:event=103499 
abc:dfe=123813 
... 

Format: `term1:term=0000000` 
我目前使用這個reg表達式從我的文本文件中刪除這些條款

myString = myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z]+", ""); 

因此,舉例來說,如果我有一個像這樣的字符串:

"blabla abc:dfe=123813 cococo ghi:pol=09339 pppoooo" 

它應該成爲:"blabla cococo pppoooo"

不過,這並不

感謝

工作
+1

請提供field [i]以及它如何工作。正則表達式開始時的「,」是什麼? – Ingo 2011-03-25 14:33:50

+1

你想刪除'='符號前的文字嗎?如在'即將到來:事件= 103499'應該變成'= 103499'? – 2011-03-25 14:35:02

+0

@Ingo我修復了它。 @Mauritz Hansen我想刪除它,將其全部刪除 – aneuryzm 2011-03-25 14:35:26

回答

4

您需要的replaceAll返回值分配回字符串參考:

myString = myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z]+", ""); 

And it works

但是,如果你想更換整個字符串,你可以這樣做:

myString = myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z=]+", ""); 

編輯:

對於編輯的問題你可以使用:

myString = myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z]+=[0-9]+ ?", ""); 

See it

+0

嗨鱈魚,「=」不會在支架內工作。你必須在+符號後加上。 – JSS 2011-03-25 14:45:56

+0

@JSS見:http://www.ideone.com/L6DoE – codaddict 2011-03-25 14:47:02

+0

@Code:如果你注意到代碼運行後沒有任何迴應。之前:即將到來:活動= 103499之後: – JSS 2011-03-25 14:51:19

1

嘗試:

myString=myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z]+=", ""); 

我你想保持=然後從上面的REG EXP字符串中刪除。

0

答案由codeaddict正常工作,以滿足您的要求,不同之處在於它會保持引起移除內容的多餘的空格。以下邏輯刪除空格以及:

String myString = "blabla abc:dfe=123813 cococo ghi:pol=09339 pppoooo"; 
// assumes that the string does not start with ' ' 
myString = myString.replaceAll("[0-9A-Za-z]+:[0-9A-Za-z=]+\\ ?", ""); 
// myString is now equal to "blabla cococo pppoooo" as per your edit.