TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
徒弟:师傅呀,正则怎么用呀?搞个有条理性的东东给我看看吧!
师傅:也对,没条理的东西,不懂的人,看了更加晕,先讲讲:字符组。
1、基本功能
字符组:
l 正则表达式的最基本结构之一
l 作用:规格某个位置能够出现的字符
l 形式:以[...]给出,在方括号内列出字符
实例:
判断10进制数值,只要能够判断每个数字出现在0-9之间,那就是10进制数值。
- public class GeneralNumTest {
- public static void main(String[] args) {
- String[] octDigits = new String[] { "0", "1", "2", "3","4","5","6","7","8","9"};
- String[] hexDigits = new String[] { "0", "1", "2", "3","4","5","6","7","8","9",
- "a", "b", "c", "d","e","f"};
- String octDigitRegex = "[0123456789]";
- String hexDigitRegex = "[0123456789abcdef]";
- for (String octDigit : octDigits) {
- if(regexMatch(octDigit,octDigitRegex)){
- System.out.println("10进制数值:" + octDigit +"能够匹配正则:" + octDigitRegex);
- }else{
- System.out.println("10进制数值:" + octDigit +"不能够能够匹配正则:" + octDigitRegex);
- }
- }
- for (String hexDigit : hexDigits) {
- if(regexMatch(hexDigit,hexDigitRegex)){
- System.out.println("16进制数值:" + hexDigit +"能够匹配正则:" + hexDigitRegex);
- }else{
- System.out.println("16进制数值:" + hexDigit +"不能够能够匹配正则:" + hexDigitRegex);
- }
- }
- }
- private static boolean regexMatch(String s, String regex) {
- return s.matches(regex);
- }
- }
复制代码 运行结果:
10进制数值:0能够匹配正则:[0123456789]
10进制数值:1能够匹配正则:[0123456789]
10进制数值:2能够匹配正则:[0123456789]
10进制数值:3能够匹配正则:[0123456789]
10进制数值:4能够匹配正则:[0123456789]
10进制数值:5能够匹配正则:[0123456789]
10进制数值:6能够匹配正则:[0123456789]
10进制数值:7能够匹配正则:[0123456789]
10进制数值:8能够匹配正则:[0123456789]
10进制数值:9能够匹配正则:[0123456789]
16进制数值:0能够匹配正则:[0123456789abcdef]
16进制数值:1能够匹配正则:[0123456789abcdef]
16进制数值:2能够匹配正则:[0123456789abcdef]
16进制数值:3能够匹配正则:[0123456789abcdef]
16进制数值:4能够匹配正则:[0123456789abcdef]
16进制数值:5能够匹配正则:[0123456789abcdef]
16进制数值:6能够匹配正则:[0123456789abcdef]
16进制数值:7能够匹配正则:[0123456789abcdef]
16进制数值:8能够匹配正则:[0123456789abcdef]
16进制数值:9能够匹配正则:[0123456789abcdef]
16进制数值:a能够匹配正则:[0123456789abcdef]
16进制数值:b能够匹配正则:[0123456789abcdef]
16进制数值:c能够匹配正则:[0123456789abcdef]
16进制数值:d能够匹配正则:[0123456789abcdef]
16进制数值:e能够匹配正则:[0123456789abcdef]
16进制数值:f能够匹配正则:[0123456789abcdef]
以连字符"-"表示范围:
l [0123456789]的表示法过于累赘,可以用范围表示法简要描述
l [0123456789] = [0-9]
l [0-789] = [0-9]
l [0123456789abcdef] = [0-9a-f]
刚刚的例子,可以修改为:
String octDigitRegex = "[0-9]";
String hexDigitRegex = "[0-9a-f]";
关于连字符的注意事项:
l 在字符组内部,只有当连字符出现在两个字符之间时,才能表示字符的范围;
l 如果出现在字符组的开头,则只能表示单个字符"-",就是连字符本身。
例如:
- public class GeneralNumTwo {
- public static void main(String[] args) {
- String[] characters = new String[] { "a", "b", "c", "d","e","f","g","-"};
- String regex1 = "[a-g]";
- String regex2 = "[-ag]";
- for (String character : characters) {
- if(regexMatch(character,regex1)){
- System.out.println("字符:" + character +"能够匹配正则:" + regex1);
- }else{
- System.out.println("字符:" + character +"不能够能够匹配正则:" + regex1);
- }
- }
- for (String character : characters) {
- if(regexMatch(character,regex2)){
- System.out.println("字符:" + character +"能够匹配正则:" + regex2);
- }else{
- System.out.println("字符:" + character +"不能够能够匹配正则:" + regex2);
- }
- }
- }
- private static boolean regexMatch(String s, String regex) {
- return s.matches(regex);
- }
- }
复制代码 运行结果:
字符:a能够匹配正则:[a-g]
字符:b能够匹配正则:[a-g]
字符:c能够匹配正则:[a-g]
字符:d能够匹配正则:[a-g]
字符:e能够匹配正则:[a-g]
字符:f能够匹配正则:[a-g]
字符:g能够匹配正则:[a-g]
字符:-不能够匹配正则:[a-g]
字符:a能够匹配正则:[-ag]
字符:b不能够匹配正则:[-ag]
字符:c不能够匹配正则:[-ag]
字符:d不能够匹配正则:[-ag]
字符:e不能够匹配正则:[-ag]
字符:f不能够匹配正则:[-ag]
字符:g能够匹配正则:[-ag]
字符:-能够匹配正则:[-ag] 本文出自 “leolee” 博客,请务必保留此出处http://jooben.blog.51cto.com/253727/317152
源码下载:http://file.javaxxz.com/2014/10/31/000029843.zip |
|