2010-08-30 36 views
4

一些字符串替换字符串我如何可以替换以下字符串中的Java:排除在Java中

Sports videos (From 2002 To 2003) here. 

TO

Sports videos 2002 2003 here. 

我使用的代码,但它删除整个字符串即
我得到这个输出:Sports videos here.

String pattern= "\\((From)(?:\\s*\\d*\\s*)(To)(?:\\s*\\d*\\s*)\\)"; 

String testStr = "Sports videos (From 2002 To 2003) here."; 

String testStrAfterRegex = testStr.replaceFirst(pattern, ""); 

这里缺少什么?

感谢

显示日期格式器不同的字符串

如果上面的字符串有日期格式一样(\\)或任何其他字符/词,然后数字,答案是行不通的

我更换原始答案与此模式,它将工作

String pattern= "\\((From)(.*)(To)(.*)\\)"; 

回答

3

更改为

String pattern= "\\((From)(\\s*\\d*\\s*)(To)(\\s*\\d*\\s*)\\)"; 
    String testStr = "Sports videos (From 2002 To 2003) here."; 
    String testStrAfterRegex = testStr.replaceFirst(pattern, "$2 $4"); 

有两个问题:

首先

你把(?:)成群多年。这是用来不记得这些组。

您不使用组标识符,如$ 1,$ 2。 我使用2美元和4美元的第2和第4组固定。


编辑

清洁的解决方案:

String pattern= "\\(From(\\s*\\d*\\s*)To(\\s*\\d*\\s*)\\)"; 
    String testStr = "Sports videos (From 2002 To 2003) here."; 
    String testStrAfterRegex = testStr.replaceFirst(pattern, "$1$2"); 
+0

我在哪里可以学习组标识符。?另外如果我想用 - (短划线)替换“TO”。即体育视频2002-2003在这里。 – NETQuestion 2010-08-30 02:09:48

+0

我发现自己 String testStrAfterRegex = testStr.replaceFirst(pattern,“$ 2 - $ 4”); – NETQuestion 2010-08-30 02:16:45

+0

@NETQuestion:你好,你可以在这里了解更多http://www.regular-expressions.info/brackets.html – Topera 2010-08-30 02:21:22