发表于: 2017-12-08 23:33:56
1 793
今天完成的事情:认真地研究了一下正则表达式 以及java对正则的应用
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern)。
可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等
在java里面 本身提供了正则相关的类 我们首先要知道两个类 在 java.util.regex.下Matcher 和 Pattern
Matcher 下有一个matches方法 public boolean matches()尝试将整个区域与模式匹配。
当且仅当整个区域序列匹配此匹配器的模式时才返回 true。
Pattern下有两个常用方法 compile和 matcher
static Parrent compile(String regex) 将给定的正则表达式编译到模式中。
public Matcher matcher(CharSequence input)创建匹配给定输入与此模式的匹配器。
java中典型的调用顺序如下
Pattern p = Pattern.compile("a*b"); 将给定的正则表达式的形式 编译到模式中
Matcher m = p.matcher("aaaaab"); 创建相关的匹配
boolean b = m.matches(); 判断 输入的字符串是否匹配 我们给定的正则表达式 返回true 或者 false
这里还是从头说起 看一下 正则表达式的基础知识
首先 元字符的概念
的元字符,metacharacter 是正则表达式规定的一个特殊代码
根据不同的功能 我把它分为 位置 字符 数量
它包括很多 比如\b
/b 代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,
但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
零宽断言 算是正则的一个进阶使用吧
简单地理解就是在一个限定位置的字符串之前或之后进行匹配查找
正向就是满足相关 负向就是后面不是相关
(?=exp):零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
(?<=exp):零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
(?!exp):零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。
?<!exp):零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp
明天计划的事情:继续写接口
遇到的问题:正则表达式 博大精深 不懂
收获:学习到了很多正则表达式的知识
复习了一波数据类型 相互转换
整形 字符型 浮点型的数据在混合运算中互相转化 转换时遵循以下原则
容量小的类型自动转换成成容量大的类型
byte short char < int < long <float <double 这里注意的是并不是严格意义上的容量 而是能表示的最大
byte short char 他们三个之间不会相互转换 在进行运算时会自动转成int
容量大的数据类型转换成容量小的数据类型时 需要加 强制转换符 但可能造成精度降低 或者溢出
在有多种类型的数据混合运算时 系统首先自动的将所有数据转换成容量最大的哪一种数据类型 然后计算
这里要 注意的是 实数常量 1.2 默认为double 整数常量 12 默认为int
这里就能理解 为什神 声明 long 类型 需要后面加L 因为不加系统就认为是个int float也是同理
浮点型 详细研究一下 float 4字节 1.4E-45~3.4028235E38 float是8位有效数字,第7位数字将会产生四舍五入
double 8字节 4.9E-324~1.7976.。E308
很奇怪 内存里面怎末表示这个小数点
评论