2011-03-25 52 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.