------- android培训、java培训、期待与您交流! ----------
package cn.itcast.c_regex; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EmailTest { public static void main(String[] args) throws IOException { // 1.获取Pattern 对象.->静态compile 传入正则表达式的字符串形式. 返回一个对象形式的正则 Pattern p = Pattern.compile("\\w+@\\w+(\\.\\w{2,3})+"); // 3. 创建字符流缓冲流,读取页面,获取页面中的信息. BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream("email.html"), "utf-8")); String line; // 5. 创建集合存储邮箱. ArrayList<String> list = new ArrayList<String>(); // 4. 循环读取,一次读取一行. while ((line = br.readLine()) != null) { // 5. 将读取的一行字符串,传入到Pattern 对象matcher 方法中-> 获取一个Mather 对象. Matcher m = p.matcher(line); // 6. Mather 对象的find 查找是否存在符合规则的内容. while (m.find()) { // hasNext // 7. 获取符合规则的内容. list.add(m.group()); // next } } for (String email : list) { System.out.println("发邮件给:" + email); } } }
package cn.itcast.f_regex; public class Demo1 { public static void main(String[] args) { // 1. 正则表达式. // System.out.println("bca".matches("abc")); // test1(); // testQq(); // test2(); // testPhone(); // test3(); // test4(); // qq 号. System.out.println("10000".matches("[1-9]\\d{4,11}")); // 手机号 System.out.println("13838384386".matches("[1][34578]\\d{9}")); // 用户名 System.out.println("jack123".matches("[a-zA-Z_]\\w{5,15}")); // 密码 System.out.println("123456".matches("\\d{6}")); // 座机 010 020-38325125 0755 System.out.println("020-38325125" .matches("[0][1-9]\\d\\d?-[1-9]\\d{6,7}")); // 邮箱 jack@itcast.cn 12345@qq.com rose@163.com lucy@sina.vip.com // xxx@sina.com.cn String emailRegex = "\\w+@\\w+(\\.\\w{2,3})+"; System.out.println("jack@itcast.cn".matches(emailRegex)); System.out.println("12345@qq.com".matches(emailRegex)); System.out.println("rose@163.com".matches(emailRegex)); System.out.println("lucy@sina.vip.com".matches(emailRegex)); System.out.println("xxx@sina.com.cn".matches(emailRegex)); } /** * <pre> * . 任何字符(与行结束符可能匹配也可能不匹配) * \d 数字:[0-9] * \D 非数字: [^0-9] * \s 空白字符:[ \t\n\x0B\f\r] * \S 非空白字符:[^\s] * \w 单词字符:[a-zA-Z_0-9] * \W 非单词字符:[^\w] * * * </pre> */ public static void test4() { // . 表示任意符号. System.out.println("abc!@`".matches(".*")); // \d 表示数字-> [0-9] System.out.println("12345".matches("\\d{5}")); // \D 非数字. 只要不是0-9 都可以的. System.out.println("~!@#JACK".matches("\\D*")); // \s 空白字符. \r\n \t System.out.println("\r\n".matches("\\s+")); // \S 非空白字符, 除了空白字符,都可以. System.out.println("ABC".matches("\\S+")); // \w 单词字符. [a-zA-Z_0-9] System.out.println("ABCabc123_".matches("\\w+")); // \W 非单词字符, [^a-zA-Z_0-9] } public static void test3() { // 匹配用户名 -> 单词字符 a-z A-Z 0-9 _ 不能数字开头, 长度6~16位. String username = "jack123"; String usernameRegex = "[a-zA-Z_][a-zA-Z_0-9]{5,15}"; System.out.println(username.matches(usernameRegex)); // 匹配密码 ->6位数字. String pwd = "123456"; String pwdRegex = "[0-9]{6}"; System.out.println(pwd.matches(pwdRegex)); // 匹配邮箱? } public static void testPhone() { // 手机号码: 第一位1 ,第二位 3 4 5 7 8 11位 . String phone = "15858589586"; phone = "13838384386"; String phoneRegex = "[1][34578][0-9]{9}"; System.out.println(phone.matches(phoneRegex)); } /** * <pre> * [abc] a、b 或 c(简单类) * [^abc] 任何字符,除了 a、b 或 c(否定) * [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) * [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) * [a-z&&[def]] d、e 或 f(交集) * [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) * [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) * </pre> */ public static void test2() { // [abc] a|b|c System.out.println("abc".matches("[abc]bc")); System.out.println("abc".matches("[abc]{3}")); // [^abc] 除了a b c System.out.println("a".matches("[^abc]")); // [a-z] 小写 System.out.println("javax".matches("[a-z]+")); // [a-zA-Z] 大小写 System.out.println("javaxABC".matches("[a-zA-Z]+")); // [0-9] 数字 System.out.println("0123".matches("[0-9]{4}")); // [1-9] 数字,不包括0. System.out.println("123".matches("[1-9]{3}")); // [a-d[m-p]] a-d 或者 m-p System.out.println("xyz".matches("[a-d[m-p]]*")); // [a-z&&[def]] System.out.println("d".matches("[a-z&&[def]]")); } public static void testQq() { // 验证qq 号码. 必须是数字,不能以0开头. 10000 5位~12位. String qq = "10000"; String qqRegex = "[1-9][0-9]{4,11}"; System.out.println(qq.matches(qqRegex)); } /** * <pre> * X? X,一次或一次也没有 * X* X,零次或多次 * X+ X,一次或多次 * X{n} X,恰好 n 次 * X{n,} X,至少 n 次 * X{n,m} X,至少 n 次,但是不超过 m 次 * </pre> */ public static void test1() { // matches(正则表达式); // System.out.println("a".matches("a")); System.out.println("a".matches("a?")); System.out.println("".matches("a?")); // * 零次,或者多次. System.out.println("b".matches("a*b")); System.out.println("ab".matches("a*b")); // + 至少出现一次. System.out.println("aaaa".matches("a+")); System.out.println("aaaab".matches("a+b")); // [n] n次 System.out.println("a".matches("a{1}")); // {n,} 至少n 次. System.out.println("aaa".matches("a{4,}")); // [n,m] System.out.println("aaaaa".matches("a{4,6}")); } }
相关推荐
黑马编程的正则表达式课程针对Python程序员,提供了详尽的教程和实例,帮助学习者深入理解和掌握这一技术。 在Python中,引入`re`库后,我们可以使用各种正则表达式模式来执行常见的字符串操作。例如,`re.match()`...
Java正则表达式介绍和练习Java正则表达式介绍和练习Java正则表达式介绍和练习
含书签,可检索 01_Python基础 02_linux基础 03_python高级 04_linux系统编程 ...07_正则表达式课件 08_数据结构和算法 09_MySQL 10_mongo 11_redis 12_前端 13_django 14_爬虫 15_tornado 16_shell 17_微信公众号
2. **正则表达式**:理解正则表达式的基本语法,用于高效地处理和匹配字符串。 3. **异常处理**:深入理解Python的异常体系,学会编写健壮的代码来处理各种运行时错误。 4. **标准库使用**:如os模块用于操作系统...
- `黑马程序员_毕向东_Java基础视频教程第13天-05-String(常见功能-比较和去除空格).avi`则可能讲解了`equals()`、`trim()`和`compareTo()`的使用方法。 理解并熟练掌握这些字符串操作是Java编程的基础,对于编写...
《JavaScript前端开发案例教程》是面向计算机相关专业的一门Web前端基础课程,涉及JavaScript语言基础、数组、函数、对象、BOM、DOM、事件、正则表达式、Ajax、jQuery等内容。
`split()`方法使用正则表达式作为分隔符来切割字符串成多个子字符串,返回一个字符串数组。`replace()`和`replaceAll()`方法用于替换字符串中的特定字符或模式。`replace()`仅替换第一个匹配项,而`replaceAll()`则...
- **正则表达式**:Perl拥有强大的正则表达式支持,可以用于复杂的文本匹配和替换操作。 - **模式匹配**:使用`m//`或`//`来执行正则表达式匹配操作。 - **替换操作**:使用`s///`进行文本替换,支持各种正则...
此外,正则表达式在文本处理中非常有用,可以用于搜索、替换或验证模式。 在数据处理方面,Python有强大的数据科学库,如NumPy提供了高效的数值计算功能,Pandas则提供了数据框用于数据清洗、分析和可视化。...
3. **切点(Pointcut)**:定义了通知何时执行的规则,通常使用正则表达式或自定义表达式来匹配方法签名。 4. **连接点(Join Point)**:程序执行过程中能够插入通知的一个点,如方法调用、字段赋值等。 5. **切入...
5. **字符串操作**:学习字符串的创建、格式化、查找替换、分割连接等常用方法,以及正则表达式的初步使用。 6. **函数与模块**:探讨函数的定义、参数传递、局部与全局变量,以及模块的导入与导出,了解如何组织...
Nginx支持正则表达式处理动态请求,这得益于Perl兼容正则表达式库(PCRE)。在安装Nginx之前,需要确保系统中的PCRE库是最新的。如果系统已有一个旧版本,可以先备份并移除: ``` rpm -qa | grep pcre # 检查是否有...
5. **标准库和第三方库**:介绍Python标准库中的常用模块,如os、sys、re(正则表达式)、json、xml等,并涉及常用的第三方库,如requests(网络请求)、pandas(数据分析)、numpy(数值计算)等。 6. **Web开发...
《黑马程序员Java基础笔记》是一份全面覆盖Java编程基础知识的学习资料,旨在帮助初学者迅速掌握Java编程语言,能够独立编写Java程序。这份笔记由多个部分组成,分别详细讲解了Java的基础语法、集合、多线程、IO以及...
8. **第2章**:可能是基础语法,包括变量声明、数据类型、控制流(if...else、switch、for、while)、字符串和正则表达式等。这部分是JavaScript学习的起点,扎实的基础对后续学习至关重要。 9. **第10章**和**第11...
其次,正则表达式(regex)也是爬虫中常见的数据过滤工具,用于匹配和提取特定模式的数据。在Python中,re模块提供了丰富的函数来处理正则表达式。例如,使用re.findall()可以找到所有匹配的子串,re.sub()则可以...
3. 正则表达式:在Python中,`re`模块用于处理字符串匹配和查找,常用于从网页文本中提取特定模式的数据。 4. 数据存储:学会将抓取的数据存储到文件(如CSV、JSON)、数据库(如SQLite、MySQL)或其他格式,如...
6. 正则表达式 - 字符串的模式匹配和文本处理。 【系统和网络编程】 1. 系统编程 - 理解操作系统提供的接口。 2. 网络编程 - Python网络编程的基础。 【前端开发】 1. Html - 超文本标记语言,用于构建网页...