scala和正则表达式常用基础知识示例
Posted 我的空中楼阁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala和正则表达式常用基础知识示例相关的知识,希望对你有一定的参考价值。
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
. 匹配除换行符以外的任意字符
\\w 匹配字母或数字或下划线或汉字
\\s 匹配任意的空白符
\\d 匹配数字
\\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
在[]里面不需要转义,在外面,如().?之类的字符是需要转义的.
后向引用示例:
\\b(\\w+)\\b\\s+\\1\\b可以用来匹配重复的单词,像go go, 或者kitty kitty。
正则表达式需求:
示例:there are 3 threads hung three minutes lasted.
获取:3
表5.懒惰限定符 代码/语法 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
a.*?b匹配最短的,以a开始,以b结束的字符串
表4.常用分组语法 分类 代码/语法 说明
捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?\'name\'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
\\b\\w+(?=ing\\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I\'m singing while you\'re dancing.时,它会匹配sing和danc。
(?<=\\bre)\\w+\\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
val regex = """\\b\\d+(?=\\s+(threads|thread)\\b)""".r println(regex.findFirstIn("there are 23 threads in workers, please check")) println(regex.findFirstIn("there are 1 thread in workers, please check")) val regex2 = """\\b\\w+(?=ing\\b)""".r regex2.findAllIn("I\'m singing while you\'re dancing").foreach { println }
以上是关于scala和正则表达式常用基础知识示例的主要内容,如果未能解决你的问题,请参考以下文章