您无法在Java正则表达式中执行此 *** 作。您必须使用
String.toUpperCase()和手动进行后期处理
toLowerCase()。
这是一个如何使用正则表达式查找和大写句子中长度至少为3的单词的示例
String text = "no way oh my god it cannot be"; Matcher m = Pattern.compile("\b\w{3,}\b").matcher(text); StringBuilder sb = new StringBuilder(); int last = 0; while (m.find()) { sb.append(text.substring(last, m.start())); sb.append(m.group(0).toUpperCase()); last = m.end(); } sb.append(text.substring(last)); System.out.println(sb.toString()); // prints "no WAY oh my GOD it CANNOT be"
请注意
appendReplacement和
appendTail
请注意,上述解决方案使用
substring和管理
tail索引等。实际上,如果使用
Matcher.appendReplacement和,则可以不用这些
appendTail。
StringBuffer sb = new StringBuffer(); while (m.find()) { m.appendReplacement(sb, m.group().toUpperCase()); } m.appendTail(sb);
请注意
sb,现在是
StringBuffer而不是
StringBuilder。在
Matcher提供
StringBuilder重载之前,
StringBuffer如果要使用这些方法,您将受制于较慢的对象。
由您决定是否值得在效率较低的情况下取舍以提高可读性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)