本章介绍Regex正则相关的知识。 曾几何时,我认为自己接触的所有的知识中最高级的为正则,原因在于它提供了一种模式匹配,并且认为它是很低层的操作。 并且了解到编译器或者汇编
本章介绍Regex正则相关的知识。
曾几何时,我认为自己接触的所有的知识中最高级的为正则,原因在于它提供了一种模式匹配,并且认为它是很低层的操作。 并且了解到编译器或者汇编器也大量运用了正则,但是这次的了解后或许会更新一些自己的观点。
java中的正则接触的较多的有两个:Pattern和Matcher。 中文意思应该是 模式 和 匹配器。 事实证明,Pattern重要性还是高于后者的,源码说话:
可见其本身会依赖于java中的一些工具,以及一些基础的数据类型。
核心的内容都在图中了。 这里记一下关键字: 线程安全,单例,复用,驻留。
这里比较重要的是关于分组。 分组的默认序号为: 0表示全匹配。
与perl语言的关系。
其类的结构。
可以看到,正则并非原子性操作。
算是正则匹配的一个比较典型的实现。
但是这里实际的关系应该是: Pattern调用,Matcher依赖调用。
通过命名识别匹配分组,其实质依然为自动分组。
对于每个正则中的元字符,背后的实质都是做这样的一些模式匹配。 事实上编译器的词法扫描和语法扫描而很相似。
需注意,正则的匹配核心是通过节点,Map的实现实际上也是定义了这样的一个节点。 其本质应该是个链式线性结构。
以上便是Pattern的相关的查看。 很乱,很多的逻辑实现没有看因为过于繁杂。