一、首先来看一下Java中的正则表达式的写法
package cn.kotliner.java.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created wangdong
* 用正则表达式,从字符串中提取电话号码
*/
public class Main {
public static void main(String... args) {
String source = "Hello, This my phone number: 010-12345678. ";
String pattern = ".*(\\d{3}-\\d{8}).*";
Matcher matcher = Pattern.compile(pattern).matcher(source);
while(matcher.find()){
System.out.println(matcher.group());
System.out.println(matcher.group(1));
}
}
}
运行结果:
Hello, This my phone number: 010-12345678.
010-12345678
二、接下来看一下Kotlin中的正则表达式的写法
package cn.kotliner.kotlin.regex
import java.util.regex.Pattern
/**
* Created by wangdong
* 正则表达式
*/
fun main(args: Array<String>) {
val source = "Hello, This my phone number: 010-12345678. "
//用Raw字符串定义正则表达式
val pattern = """.*(\d{3}-\d{8}).*"""
//将正则规则传入到Regex中,调用findAll方法,将需要查询的源传进来
//将它变成一个list,将它MatchResult打平用flatMap,得到groupValues集合,用forEach将他打印出坑了
Regex(pattern).findAll(source).toList().flatMap(MatchResult::groupValues).forEach(::println)
}
运行结果:
Hello, This my phone number: 010-12345678.
010-12345678
好啦,结束啦