我正则表达式有问题,应该只用一个字符串替换另一个。基本上,我想转换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
。它只是在寻找与您的正则表达式匹配的子字符串。