正则表达式的学习和练习
2018-01-23 14:36
204 查看
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。是用正则表达式来完成邮箱,账号的验证可以省去繁杂的逻辑,用更少的代码完成更复杂的事务。
通过学习我大致把当前学习的常见的字符分为四种:
\d : 数字[0-9]
\D:非数字[^0-9]
\s : 空白字符[\t\n\xOB\f\r]
\S : 非空白字符[^\s]
\w : 单词字符[a-zA-Z_0-9]
\W : 非单词字符[^\w]
X* X,零次或多次;
X+ X,一次或多次;
X{n} X,恰好n次;
X{n,} X,至少n次;
X{n,m} X,至少n次,不超过m次;
例如:
[abc] 表示a或b或c
[A-Za-z_0-9] 表示单词字符
{ }花括号表示数量词
( )圆括号表示捕获组,圆括号中的内容作为一组来被识别
例如:
(abc) 表示abc
在圆括号中可以使用逻辑符号连接
例如:
(abc|def)表示abc或def
感觉把正则表达式大致的分为这三个类会更好理解,记忆,学习以及使用
在API文档Pattern类下提供的正则表达式的典型调用方法是
public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
Pattern.matches(regex, str)
参数:
regex - 用来匹配此字符串的正则表达式
返回:
当且仅当此字符串匹配给定的正则表达式时,返回 true
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern
2 .正则表达式完成切割指定字符的功能
4000
3 . 正则表达式玩成替换指定字符的功能
4 . 匹配并取出指定的字符串
5.正则表达式的分组功能
通过学习我大致把当前学习的常见的字符分为四种:
1,预定义字符类
.:任何字符\d : 数字[0-9]
\D:非数字[^0-9]
\s : 空白字符[\t\n\xOB\f\r]
\S : 非空白字符[^\s]
\w : 单词字符[a-zA-Z_0-9]
\W : 非单词字符[^\w]
2,数量词
X? X,一次或一次也没有;X* X,零次或多次;
X+ X,一次或多次;
X{n} X,恰好n次;
X{n,} X,至少n次;
X{n,m} X,至少n次,不超过m次;
3,表示逻辑运算的词
正则表达式中的逻辑运算的词和java中逻辑运算符基本相同,除了逻辑非在正则表达式中是使用 ^ 表示4,三个括号的使用
[ ]方括号中一般放预定义字符类,多个字符之间用默认逻辑或连接。例如:
[abc] 表示a或b或c
[A-Za-z_0-9] 表示单词字符
{ }花括号表示数量词
( )圆括号表示捕获组,圆括号中的内容作为一组来被识别
例如:
(abc) 表示abc
在圆括号中可以使用逻辑符号连接
例如:
(abc|def)表示abc或def
感觉把正则表达式大致的分为这三个类会更好理解,记忆,学习以及使用
在API文档Pattern类下提供的正则表达式的典型调用方法是
在API文档Pattern类下提供的正则表达式的典型调用方法是
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
平时使用时可以直接调用String类下的matchs()方法
matchespublic boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。
调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:
Pattern.matches(regex, str)
参数:
regex - 用来匹配此字符串的正则表达式
返回:
当且仅当此字符串匹配给定的正则表达式时,返回 true
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern
正则表达式的常见应用
用正则表达式验证邮箱账号/** * 邮箱验证 *6-18位任意单词字符+@+2-6位任意单词字符+一位或多位.+任意单词字符 */ public static void test1(String str2) { String str="\\w{6,18}@\\w{2,6}(\\.\\w)+"; //Scanner sc=new Scanner(System.in); System.out.println("请输入邮箱"); //String str2=sc.next(); System.out.println("str2.matches(str) "+str2.matches(str)); }
2 .正则表达式完成切割指定字符的功能
4000
/** * * 切割 字符串中的逗号 */ public static void test2() { String numbers="1,2,3,4,5,6,7,8,9,0"; String regex=","; String [] str=numbers.split(regex); for(int i=0;i<str.length;i++) { System.out.println(str[i]); } }
3 . 正则表达式玩成替换指定字符的功能
/** * * 替换字符串中的单词字母 */ public static void testReplace() { String str="aaaa1ahnvuhfewoi11384209e7439fsdhfdohd8892489"; String regex="[a-zA-Z]"; String str2=str.replaceAll(regex, ""); System.out.println(str2); //输出 11138420974398892489 }
4 . 匹配并取出指定的字符串
/** * * * 取出指定的字符串 */ public static void testBoundary() { // 定义字符串 String s = "abc 1234 efg a d,e hhh aa"; // 规则 单词边界+三位任意字符+单词边界 String regex = "\\b\\w{3}\\b"; // 把规则编译成模式对象 Pattern p = Pattern.compile(regex); // 通过模式对象得到匹配器对象 Matcher m = p.matcher(s); // 调用匹配器对象的功能 // 通过find方法就是查找有没有满足条件的子串 //第一步,找到 find() while (m.find()) { //第二步 ,把找到的东西拿出来 group String string = m.group(); System.out.println(string); //输出abc efg hhh } }
5.正则表达式的分组功能
/** * * 分组 * (..)表示两位任意字符(...)表示三位任意字符1+表示第一个()的内容重复 * 一次或者多次 */ public static void testRegexGroup() { String regex="(..)(...)\\1+"; System.out.println("高兴高高兴高兴高兴高兴高兴".matches(regex)); //输出true System.out.println("快快乐乐".matches(regex)); //输出false }
相关文章推荐
- 学习正则表达式的一点练习与测试
- 正则表达式学习进程(二)re.search() 与练习
- python学习之正则表达式练习:编写一个计算器
- 正则表达式学习笔记
- 正则表达式学习
- 【转】通过例子学习正则表达式(二)--检查输入的"钱"
- 有关javascript的正则表达式的学习
- Linux学习-shell利用正则表达式验证邮箱合法性
- 正则表达式 学习
- 通过例子学习正则表达式(三)--检查E-mail地址及其他
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
- JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
- js正则表达式学习之
- Linux学习笔记(正则表达式)
- ASP.NET验证控件学习总结与正则表达式学习入门
- 正则表达式学习
- 正则表达式 学习笔记3.4
- javascript中正则表达式应用学习_search ()
- Python基础_正则表达式学习一
- 【正则表达式】【01】基础学习(2015.07.24)