System.out.println("hh h".matches("hh\\b.{2,4}"));
输出:true
我在\\b后面的.明明写的是{2,4}个字符但是实际只有一个字节(这里还想问下,在正则中分字节和字符吗)
请问原因?
输出:true
我在\\b后面的.明明写的是{2,4}个字符但是实际只有一个字节(这里还想问下,在正则中分字节和字符吗)
请问原因?
解决方案 »
- public abstract class A extends B implement C{} 帮忙解释下这句java代码!
- 哪里有成熟的线程池框架下载
- [闭月羞花猫] C++ OR JAVA ? 对前两天写的一个小建议的一点点补充
- PrepareStatement的executeUpdate语句返回值问题?
- Hotjava怎么用?
- 问:又没有一种文本组件可以显示一个整型的值,但不能编辑,我用它来显示在线用户的数目。
- 如何去掉JFileChooser对话框中的“所有文件”过滤器
- 急急急!! 请教:如何在Java中直接控制串口Com口
- 我要做个FRAM,还有两个按狃,按狃之间有个线段连着,MOUSEDRAGGED其中一个,线段随着变化。
- 比较将JAVA中的Calendar类的对象转化成Timestamp类
- 被synchronized块修饰的类成员变量和声明为static的类成员变量一样?
- spring连接池的问题
System.out.println("hh h".matches("hh\\b[.]{2,4}"));
还有我这样
System.out.println("hh h".matches("hh\\b."));
System.out.println("hh h".matches("hh\\b.?"));
输出的是:
false
false
求原因
System.out.println("hh h".matches("hh\\b."));
此时点号匹配一个字符,肯定为false
System.out.println("hh h".matches("hh\\b.?"));
一样的匹配0或者1个,也为false
System.out.println("hh h".matches("hh\\b.?h"));
这样就都为true了
输出:true
a明明是一个字节,但是.是匹配一个字符为什么还是true呢
hh后面 是单词分隔符标识(应该是只要不是字母就行)如 hh@h hh.h都可以都可以把 hh分隔出来
很显然 现在是被空格 分隔了
那么后面的“ h”是可以匹配上 .{2-4}的。
比如 hh hsdc 这个就超出了。因为它的长度是5.
Pattern p = Pattern.compile("\\b.{2,4}");
Matcher m = p.matcher("hh h");
while(m.find()){
System.out.println(m.group());
}