正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx
基础知识:正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html 版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源
使用格式: 见java API http://docs.oracle.com/javase/7/docs/api/
java : java.util.regex.Pattern
scala : scala.util.matching
scala里使用正则表达式
可以通过向Regex构造器传递字符串构造新的正则表达式。
val Decimal = new Regex("(-)?(\d+)(\.\d*)?")
注意:每个反斜杠都出现两次,因为Java和Scala里单个反斜杠是字符串文本的转义符。
Scala的原始字符串提供了另一种方案:将原始字符串夹在三引号(""")之间。这样原始字符串的所有字符与输入完全一致
val Decimal = new Regex("""(-)?(d+)(.d*)?""")
也可写为
val Decimal = """(-)?(d+)(.d*)?""".r
即在字符串后面添加.r即可获得正则表达式。
用正则表达式查找:
regex findFirstIn str:查找字符串str中正则表达式regex的首次出现,返回Option类型的结果
regex findAllIn str:查找字符串str中正则表达式regex的所有出现,返回Option类型的结果
regex findPrefixOf str:查找字符串str中开始位置正则表达式regex的出现,返回Option类型的结果
def main(args:Array[String]):Unit={ val Decimal = """(-)?(d+)(.d*)?""".r; val input : String = "My String is for -1.0 to 99 by 3"; //查找出所有的数字 println("==number==") for(s<- Decimal findAllIn input) println(s); //查找第一个数字 println("==first number=="); println(Decimal findFirstIn input); println("查找开头为数字的字符串的首个数字"); //若字符串以数字为开头则输出Some(num),否则输出None println(Decimal findPrefixOf input) }
结果:
==number== -1.0 99 3 ==first number== Some(-1.0) 查找开头为数字的字符串的首个数字 None