正则表达式遇到的一些疑惑

小小白每天不奋斗 2018-09-21 07:50:02
package zhenze;

import java.util.Scanner;

public class fenge {
public static void main(String[] args) {

//定义一个年龄搜索范围
String str="E:\\f\\i";
//定义规则
String regex=".";
//调用方法 split(String regex):分割字符串
String[] strs=str.split(regex);
//遍历
for(int i=0;i<strs.length;i++) {
System.out.println(strs[i]);

}
}
}
为什么输出为空白?
若将规则改为String regex="-";
为什么输出为E:\f\i


...全文
361 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
所有的字符都是分隔符,那自然就分割不出内容来了。。
尘世美1993 2018-09-27
  • 打赏
  • 举报
回复
正确的做法应该是这样。split(String regex)里面的regex参数是正则表达式。正则表达式里面的 . 代表所有字符,如果你用 . 分割,则是以所有字符来分割,当然剩下的是“ ”空串。在前面加双斜杠的含义就是----java里面反斜杠就是转义的意思,2个反斜杠就是一个斜杆字符,那么传给方法的参数就是\.,\.的正则表达式的意思是匹配 . 字符串。
public static void main(String[] args) {

//定义一个年龄搜索范围
String str="E:\\f.\\i";
//定义规则
String regex="\\.";
//调用方法 split(String regex):分割字符串
String[] strs=str.split(regex);
//遍历
for(int i=0;i<strs.length;i++) {
System.out.println(strs[i]);

}

}
  • 打赏
  • 举报
回复
我知道 . 是匹配所有字符,是将所有字符都当成分隔符,但是我想不明白为什么将所有字符都当成分隔符就会输出空白
qq_39936465 2018-09-25
  • 打赏
  • 举报
回复
分隔符不会加入分割后的字符串数组中,你所有字符都是分隔符,当然数组为空咯
Surrin1999 2018-09-22
  • 打赏
  • 举报
回复
楼上正解 第二个疑问是因为有正则但是匹配不到 就返回了原String
icarusliu81 2018-09-21
  • 打赏
  • 举报
回复
.是匹配所有字符,所有字符都当成分隔符了,输出的当然是空白了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧