关于Java中正则表达式的问题

时间:2011-03-25 14:30:32

标签: java regex

我正在解析文本文件,我需要删除所有这样的术语:

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"

但它不起作用

感谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

尝试:

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

我想保留=然后从上面的reg exp字符串中删除。

答案 2 :(得分: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.