我正则表达式有问题,应该只用一个字符串替换另一个。基本上,我想转换LLC的任何大写字母变体,并将其替换为LLC。例如。 Llc将成为LLC。但是,就我而言,结果只是替换字符串。我很想念某些东西。

String pattern = "(?i)(.*?)\\b(LLC.?)\\b(.*?)";
String replacement = "LLC";
String unformatted = "Midwest Horticultural Llc";

String formatted = unformatted.replaceAll(pattern, replacement);


我的期望是格式化​​的字符串将是:

Midwest Horticultural LLC


但是我最终得到的实际上是:

LLC


如果有人可以向我展示我的方式的错误,我将不胜感激。

最佳答案

问题是因为您的模式中(.*?)之前和之后都有(LLC.?)。这意味着它将用您的新字符串替换所有内容(因为您匹配任何字符的任何数量),而不仅仅是您想要的一部分。如果将其删除,则可以正常工作。

String pattern = "(?i)\\bLLC\\b";
String replacement = "LLC";
String unformatted = "Midwest Horticultural Llc";

String formatted = unformatted.replaceAll(pattern, replacement);
System.out.println(formatted);


给您“中西部园艺有限责任公司”

请记住,进行替换时,不需要正则表达式匹配整个String。它只是在寻找与您的正则表达式匹配的子字符串。

09-27 17:00