java正则表达
一、正则表达式
一个正则表达式是含有一些具有特殊意义字符的字符串,这些字符称作正则表达式中的元字符。例如“\\dcat”中的\\d就是具有特殊意义的元字符,代表0到9中的任何一个字符。
表1 元字符
元字符 | 在正则表达式中的写法 | 意 义 |
. \d \D \s \S \w \W \p{punct} |
. \\d \\D \\s \\S \\w \\W \\p{Punct} |
代表除换行符以外任何一个字符 代表0至9任何一个数字 代表任何一个非数字字符 代表空格类字符,‘\t’、‘\n’、‘\x0b’ 代表非空格类字符 代表可用于标识符的字符(不包括美元符号) 代表不能用于表示符的字符 代表标点符号:!@#¥%……&*()+-*/[]{}\';.,/?>< |
元字符“.” 可以匹配除了换行符以外的任何一个字符。若想匹配包括换行符的任意字符可以用"[\\s\\S]"匹配。
在正则表达式中可以用方括号扩起若干个字符来表示一个元字符,该元字符表示方括号中任意一个字符。方括号元字符的意义如下:
[abc]:代表a、b、c、中任意一个字符。
[^abc]:代表除了a、b、c以外的任意字符。
[a-zA-Z]:代表英文字母中任意一个。
[a-d]:代表a - d 中任意一个字符。
[a-d[m-p]]:代表a至d或m至p中任意一个(并)。
[a-z&&[def]]:代表d、e、f、中任何一个(交)。
[a-f&&[^bc]]:代表a、d、e、f(差)。
在正则表达中可以用限定符。
表2 限定符
带限定符号的模式 | 意 义 |
---|---|
X? X* X+ X{n} X{n,} X{n,m} XY X|Y |
X出现0次或1次 X出现0次或多次 X出现1次或多次 X出现n次 X出现至少n次 X出现n次至m次 X后跟Y X或Y |
二、正则表达简单运用
(1)字符串替换
1 public class Test { 2 3 public static void main(String[] args) { 4 String source = new String("12hello34beijing56"); 5 //"[a-zA-Z]+" 匹配英文字母一次或多次 6 source = source.replaceAll("[a-zA-Z]+", "你好"); 7 System.out.println(source); 8 } 9 10 }
运行结果:字符串中英文字符被替换成“你好”
(2)字符串分解
1 public class Test { 2 3 public static void main(String[] args) { 4 String source = new String("who are you(Caven?)"); 5 /** 6 * 以空格符、数字、和符号进行分割 7 * 构造正则表达式 8 */ 9 String regex = "[\\s\\d\\p{Punct}]+"; 10 String[] words = source.split(regex); 11 for (int i = 0; i < words.length; i++) { 12 System.out.println(words[i]); 13 } 14 } 15 16 }
运行结果:单词被分割出来