Java中如何编写正则表达式从字符串中提取数字?
故障原因
- 你使用的正则表达式
\\d{10}规则为匹配连续10位数字,但示例字符串1234568asdjhgsd中的数字部分只有7位,无法命中匹配规则,因此m.find()始终返回false,不会进入while循环执行输出逻辑。
解决方案
如果你的需求是提取字符串中所有连续的数字段,不需要限制长度,将正则规则修改为\\d+即可,+代表匹配1个及以上的前置规则(也就是数字)。
修正后的核心代码如下:
textView.setText("1234568asdjhgsd"); String str = (String) textView.getText(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 修改正则为匹配1个及以上连续数字 Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher(str); while (m.find()){ String xxx = m.group(); System.out.println(xxx); } } });
如果你确实需要匹配固定长度的数字(比如10位编号),请先确认输入字符串中存在对应长度的连续数字,再调整正则中
{}内的数值即可。
内容的提问来源于stack exchange,提问作者Luxira
相关产品推荐
相关产品推荐

