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

Suj*_*jju 1 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
}
Run Code Online (Sandbox Code Playgroud)

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

aio*_*obe 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>
}
Run Code Online (Sandbox Code Playgroud)

此外,你不需要DOTALL,除非你有间换行字符<>.

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

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