在java中使用。*替换字符串内容

时间:2014-08-19 11:55:43

标签: java pattern-matching

我正试图捕捉''部分内容可能是''和'>'符号可能有所不同它可能还包含一些点。所以我正在尝试

String Inputstr = "SOME <Module Name> Module";                  
ptrn = Pattern.compile("<.*>", Pattern.DOTALL);
mtch = ptrn.matcher(Inputstr);
if (mtch.matches()) {
    // Do a replacement operation
}

但问题是它根本没有进入if条件。 感谢帮助。

3 个答案:

答案 0 :(得分:7)

您应该使用find而不是matches。 (matches要求整个字符串匹配。)

String Inputstr = "SOME <Module Name> Module";                  
Pattern ptrn = Pattern.compile("<.*>", Pattern.DOTALL);
Matcher mtch = ptrn.matcher(Inputstr);
if (mtch.find()) {
    System.out.println("The <...> part: " + mtch.group());  // <Module Name>
}

另外,除非DOTALL<之间有换行符,否则您不需要>

如果您确实想要将模块名称替换为另一个字符串,则可以执行以下操作:

String Inputstr = "SOME <Module Name> Module";                  
String outputStr = Inputstr.replaceAll("<.*>", "A-module-name");
                            ^^^^^^^^^^
System.out.println(outputStr);  // "SOME A-module-name Module"

答案 1 :(得分:2)

您可以使用

Inputstr.replaceAll("<.*>", replaceText);

这将是一个更短的解决方案。

顺便说一下:按照惯例,变量名的第一个字母是用小写字母写的。

答案 2 :(得分:0)

使用

更整洁,更易读
Inputstr.replaceAll("<.*>", "replaced text here");