Scala 正则详解以及相关技巧总结
- 这篇博客的代码来源自Scala的Regex.scala文件,这里就不带大家看源码了,但是例子都是源码中的东西(可能稍微做了点修改)
文章目录
- Scala 正则详解以及相关技巧总结
-
-
-
- 1.关于正则匹配中的group
- 2.抽取已匹配的正则表达式中的部分内容(模式匹配表达式要写全)
- 3.测试正则表达式是否被匹配
- 4.抽取已匹配的正则表达式中的部分内容(模式匹配表达式不用写全)
- 5.在给定字符串中查找指定模式的正则是否存在其中
- 6.findFirstIn方法:匹配一个字符串中符合正则表达式的第一个字符串:
- 7.匹配一个字符串中符合正则表达式的字符串中第一个group的满足正则匹配的值
- 8.匹配一个字符串中符合正则表达式的字符串第一个group的所有满足值
- 9.findAllIn:方法返回一个特殊的迭代器对象能够做最后的match查询
- 10.findAllIn()方法不会进行重叠匹配
- 11.文本替换可以无条件执行,也可以作为当前匹配的函数执行:
- 12.模式匹配中获取整个group的值
- 13.scala的字符的匹配
- 14.字符匹配当中,如果正则表达式中有多个group只返回一个值
- 15.匹配字符串中的子字符串
-
-
1.关于正则匹配中的group
什么正则匹配中的group
?大致的意思就是如果一个正则表达式中有部分被括号包裹了例如(\d+)年
,那么这个正则表达式中就存在一个group
,(\d+)年(\d+)月
这样的话,里面就存在两个group
。好的,下面我要开始介绍一下其它的操作了,走起来
-
1.
group
的表达式的基本用法
如果是没有group
的正则表达式的话例如:
那么这样是可以调用的,没有问题
得到的结果就是显示一个true
:
注意:如果正则表达式中存在一个group
的话
比如:
结果:
结果为true
,没有问题
现在将代码修改成如下形式:
上面就是将match
中的p2(_*)
修改成了p2()
,这里的话,程序执行,编译不报错,但是p2Matches
会得到false
的结果。( 我的猜测就是正则表达式如果带有group
的话,那么在match
匹配中针对这个正则表达式,不传入的参数的话,就匹配不上,可能是在匹配的过程中会将这个字符串拆分成一个一个字符序列,然后将其与正则表达式相匹配) -
2.正则表达式中的group起别名
创建一个新的带有group
的正则匹配的表达式,可以为每个group
起一个别名,代码示例如下:
结果如下:
上图打印出了group
的名为year
的对应的字符串表达式。 -
3.含有
group
的match
匹配中的case
中含有带变量名的正则表达式
在带有group
的mach
当中的正则表达式的括号里面可以给定一个变量的名,这样在进行模式匹配的过程中,如果有满足这个正则表达式的group
的字符串里面。这个变量名就指代着这个字符串,然后就可以调用其中的一些方法了。代码案例如下:
输出的结果如下: