如何从含字母数字的字符串中提取字母?Java正则分割问题求助
解决Java字符串分割提取非数字部分的问题
首先你的正则表达式存在语法错误,缺少了一个闭合的括号),导致代码无法正常运行。修正后的分割正则应该是"(?<=\\D)(?=\\d)",这个正则的作用是在非数字字符(\D)之后、数字字符(\d)之前的位置进行分割。
修正后的代码如下:
String str = "K89"; String[] part = str.split("(?<=\\D)(?=\\d)"); System.out.println(part[0]); // 输出 "K"
另外,如果你的需求只是提取字符串开头的非数字部分,还有更直接的方法:
- 使用
replaceAll直接移除所有数字:String str = "K89"; String result = str.replaceAll("\\d+", ""); System.out.println(result); // 输出 "K" - 使用正则匹配器定位非数字前缀:
import java.util.regex.Matcher; import java.util.regex.Pattern; String str = "K89"; Pattern pattern = Pattern.compile("^\\D+"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { System.out.println(matcher.group()); // 输出 "K" }
内容的提问来源于stack exchange,提问作者antonia
相关产品推荐
相关产品推荐

