Java正则表达式随手笔记

2/22/2017来源:ASP.NET技巧人气:1579

一、

import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by nostalie on 17-2-20. */ public class PatternTest { public static void main(String[] args) { String str1 = "【活跃】王杰-西科大(940096538) 2014-10-09 19:20:08 11月的培训具体是从哪一天开始呢。"; String str2 = "【冒泡】宋晓峰-民大(1649713638 2014-10-09 19:01:57 双击查看原图"; String str3 = "【话唠】马文-陕科大<mawen280365195@QQ.com> 2014-10-09 19:07:35 linux java具体要学习些什么,好让我们底下找找资料"; List<String> lines = new ArrayList<String>(); lines.add(str1);lines.add(str2);lines.add(str3); //匹配汉字 /** *【活跃】王杰 *西科大 *月的培训具体是从哪一天开始呢。 *【冒泡】宋晓峰 *民大 *双击查看原图 *【话唠】马文 *陕科大 *具体要学习些什么,好让我们底下找找资料 */ String regEx1 = "[\\u0391-\\uFFE5]+"; //匹配日期 /** * result: *2014-10-09 19:20:08 *2014-10-09 19:01:57 *2014-10-09 19:07:35 */ String regEx2 = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"; /** * + 匹配前一个元素一个或多个 * × 匹配前一个元素0个或多个 * ? 匹配前一个元素0个或一个 * {n} 匹配前一个元素n个 * {n,} 匹配前一个元素 >=n 个 * {n,m} 匹配前一个元素 m>=x>=n * \s 匹配任何不可见字符,包括空格、制表符、换页符等等 * \S 匹配任何可见字符 * \d 匹配一个数字字符。等价于[0-9]。 * \D 匹配一个非数字字符。等价于[^0-9]。 * ^起始位置或非 ^[a-z] 以a-z开头 [^a-z] 非小写字母 * $ 结尾 * * result * 【活跃】王杰-西科大(940096538) *【冒泡】宋晓峰-民大(1649713638 *【话唠】马文-陕科大<mawen280365195@qq.com> */ String reg = "^【[\\u0391-\\uFFE5]+】[\\u0391-\\uFFE5]+-*[\\u0391-\\uFFE5]+[(<][^\\s]+[)>]?"; for(String line : lines) { // 编译正则表达式 Pattern pattern = Pattern.compile(regEx1); // 忽略大小写的写法 // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(line); // 查找字符串中是否有匹配正则表达式的字符/字符串 while (matcher.find()) { System.out.PRintln(matcher.group()); } } } }