我正试图捕捉''部分内容可能是''和'>'符号可能有所不同它可能还包含一些点。所以我正在尝试
String Inputstr = "SOME <Module Name> Module";
ptrn = Pattern.compile("<.*>", Pattern.DOTALL);
mtch = ptrn.matcher(Inputstr);
if (mtch.matches()) {
// Do a replacement operation
}
但问题是它根本没有进入if条件。 感谢帮助。
答案 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");