1.快速入门
提取英文

提取数字

提取英文和数字

2.源码分析:
1.正则表达式中没有分组的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| import java.util.regex.Matcher; import java.util.regex.Pattern;
public class RegTheory { public static void main(String[] args) { String content="1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台" + "(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、" + "无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;" + "J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布," + "是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。";
String regStr="\\d\\d\\d\\d";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()){ System.out.println("找到了"+matcher.group(0)); } } }
|
2.正则表达式中存在分组的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| import java.util.regex.Matcher; import java.util.regex.Pattern;
public class RegTheory { public static void main(String[] args) { String content="1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台" + "(简称为Java2)的3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、" + "无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;" + "J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。Java 2平台的发布," + "是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。";
String regStr="(\\d\\d)(\\d\\d)";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
System.out.println("找到了"+matcher.group(0)); System.out.println("第一组小括号取到的值"+matcher.group(1)); System.out.println("第二组小括号取到的值"+matcher.group(2)); } } }
|
3.正则表达式语法
3.1元字符-转义符\
1
| 需要用到转义符号的字符有: . * + ( ) $ / \ ? [ ] ^ { }
|
3.2元字符-字符匹配符
符号 |
含义 |
示例 |
说明 |
[ ] |
可接收的字符列表 |
[efgh] |
e、f、g、h中的***任意一个***字符 |
[ ^ ] |
不接收的字符列表 |
[^abc] |
除a、b、c之外的***任意一个***字符,包括数字和特殊符号 |
- |
连字符 |
A-Z |
任意单个大写字母 |
. |
匹配除\n 以外的任何字符。如果要匹配.本身那就需要使用\\. |
a..b |
以a开头,b结尾,中间包括2个任意字 |
\\d |
匹配单个数字字符,相当于[0-9] |
\\d{3}(\\d)? |
包含3个或4个数字的字符串 |
\\D |
匹配单个非数字字符,相当于[^0-9] |
\\D(\\d)* |
以单个非数字字符开头,后接任意个数字字符串 |
\\w |
匹配单个数字、大小写字母、下划线字符,相当于[0-9a-zA-Z] |
\\d{3}\\w{4} |
以3个数字字符开头的,长度为7的数字字母字符串 |
\\W |
匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z] |
\\W+\\d{2} |
以至少1个非数字字母字符开头,2个数字字符结尾的字符串 |
\\s |
匹配任何空白字符(空格、制表符等) |
|
|
\\S |
匹配任何非空白字符(空格、制表符等) |
|
|
Java正则表达式默认是区分字母大小写的,如何实现不区分大小写?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import java.util.regex.Matcher; import java.util.regex.Pattern;
public class RegExp03 { public static void main(String[] args) { String content ="abc1123ABC";
String regStr = "a((?i)b)c"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()){ System.out.println("找到了"+ matcher.group(0)); } } }
|
或者:在创建正则表达式对象的时候就注入参数 (INSENSITIVE 不敏感的)
1
| Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);
|
未完待续………..