今天上午翻了一下自己无聊学习了一个月的正则表达式,忽然发现好多的都忘记了.
所以现在打算温习下,顺表做个笔记.
打算写一个系列,努力去坚持.
基本按照书本章节来写
start:
第一章 正则表达式入门
作为对程序员来说,一些描述性,摘要性的东西我就不多说了.作为一个笔记类的文章,我大概在里面写一些自己在学习过程中觉得应该注意的,或者比较重点的东西.当然,很多都是自己主观的,大家有意见可以提出.
在这本书中,作者很推崇perl,我看了之后,觉的perl真的是很适合去做正则的一些工作.但是自己perl基本是只是熟悉语法,遗憾...只有慢慢学习了!
进入技术性学习:
1:行的起始和结束 ^ $
2:字符组 是以[]作为字符组的 比如[ab]
注意:在字符组内部,字符组元字符-表示一个范围 eg:[a-z]
3:排除性字符走 [^ab]
注意:排除型字符组表示"匹配一个未列出的字符",而不是"不要匹配列出的字符"
4:点号匹配任意字符
5:多选结构
...|...|...
在这里作者提到了多选结构和字符组的一个有点搞的东西,自己在第一次看的时候也被弄忽悠了,作者最后在后面解释:
一个字符组只能匹配目标文本的单个字符,而每个多选结构自身都可能是完整的正则表达式,都可以匹配任意长度的文本.
ps:我在后面看到,正则中的条件判断,类似java中的三目运算符,可以模拟多选
6:忽略大小写
这个自己觉的很有用,刚刚入行的时候,想用这个功能,问了很多人,都不知道...
暂时先给出一个egrep的例子,后面仔细描述
egrep
-i 'a' abbba (暂时未测试)
7:单词边界 \<(起始) \>(结束) \B \b
8:可选项元素 ? colou?r 这个u可以出现,也可以不出现.出现频率最多出现一次.类似实现方式有colou{0,1}r
9:重复出现
+ 一次或多次 至少一次
* 零次或多次 最少零次
10:区间
{min.max}
11:捕获以及反向引用
解释 捕获:一般正则表达式中括号中匹配内容会被捕获,也就是被规则引擎保存
反向引用:对捕获的内容,进行引用
eg:\<([A-Za-z])+\1\> [A-Za-z] 是被捕获内容 \1是对它的反向引用
注:各个语言中的捕获,以及反向引用可能实现方式不同,但是概念是一样的
12:转义 \char
附上java的一个简单代码,对上面的进行简单代码实现.
package com.cn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegularTest {
/**
* 简单匹配
*
* @param testString
* 测试字符
* @param regular
* 测试正则表达式
*/
private static void MarchRegular(final String testString,
final String regular) {
Pattern pattern = Pattern.compile(regular);
Matcher marcher = pattern.matcher(testString);
System.out.print(regular + "匹配" + testString + ":");
if (marcher.find()) {
System.out.println("OK");
} else {
System.out.println("NG");
}
}
/**
* 捕获及反向引用
*
* @param testString
* 测试字符
* @param regular
* 测试正则表达式
*/
private static void MarchGroup(final String testString, final String regular) {
Pattern pattern = Pattern.compile(regular);
Matcher matcher = pattern.matcher(testString);
if (matcher.find()) {
System.out.print(regular + "匹配" + testString + "OK");
int groupCount = 0;
groupCount = matcher.groupCount();
for (int i = 0; i < groupCount; i++) {
System.out.print("第" + i + "个捕获值为:" + matcher.group(i + 1));
}
} else {
System.out.print(regular + "匹配" + testString + "NG");
}
}
public static void main(String[] args) {
/*
* ^ $
*/
MarchRegular("abb", "^a*b$");
MarchRegular("abbc", "^a*b$");
/*
* [ab]
*
*/
MarchRegular("a", "[abc]");
MarchRegular("d", "[abc]");
/*
* [^ab]
*/
MarchRegular("d", "[^abc]");
MarchRegular("a", "[^abc]");
/*
* 点号匹配任意字符
*/
MarchRegular("a", ".");
/*
* 多选结构
*/
MarchRegular("a", "a|b|bc");
MarchRegular("bc", "a|b|bc");
MarchRegular("bd", "a|b|bc");
MarchRegular("d", "a|b|bc");
/*
* 忽略大小写 java中忽略大小写还有另一种写法,
* Pattern.compile的第二个参数:Pattern.CASE_INSENSITIVE)
*
*/
MarchRegular("d", "(?i:D)");
MarchRegular("D", "(?i:d)");
/*
* 单词边界 \\b 这里\b是对应单词边界 \\b其中对\进行了转义
*/
MarchRegular("test", "\\btest\\b");
MarchRegular("tes", "\\btest\\b");
/*
* 可选项元素 ?
*/
MarchRegular("tes", "test?");
MarchRegular("test", "test?");
MarchRegular("tesm", "test?");
/*
* + *
*/
MarchRegular("test", "test+");
MarchRegular("testt", "test+");
MarchRegular("tes", "test+");
MarchRegular("test", "test*");
MarchRegular("testt", "test*");
MarchRegular("tes", "test*");
MarchRegular("tess", "test*");
MarchRegular("tem", "test*");
/*
* 区间
*/
MarchRegular("m", "m{0,4}");
MarchRegular("mm", "m{0,4}");
MarchRegular("mmm", "m{0,4}");
MarchRegular("mmmm", "m{0,4}");
MarchRegular("mm", "m{3,4}");
/*
* 捕获以及反向引用 java中反向引用采用 matcher.group(arg)
*/
MarchGroup("mmaa", "(m)(a)");
}
}
分享到:
相关推荐
《精通正则表达式》是一本深入探讨正则表达式的权威书籍,英文版结合中文目录,为学习者提供了便利。正则表达式是计算机科学中用于模式匹配和文本操作的强大工具,广泛应用于文本处理、数据提取、编程语言、网页爬虫...
4. **学习正则的学习笔记**:可能包含一份详细的正则表达式学习资料,涵盖了基础概念如元字符、量词、字符类等,以及高级特性如分组、后向引用、预查等,方便用户系统学习。 5. **正则表达式参考手册**:可能提供了...
以上就是《精通qtp_自动化测试技术领航》第三章学习笔记的详细知识点,内容涵盖了正则表达式的使用、Html DOM的应用、数据库操作方法和QTP中打开网页的多种方法。通过这些知识点的学习,可以显著提升自动化测试...
这两本书结合在一起,可以为读者提供一个全面而深入的Java学习平台,不仅能够掌握Java编程的基础,还能精通正则表达式这一强大工具,从而在解决问题和开发项目时更加得心应手。无论是对Java初学者还是有经验的开发者...
《王纯业版Python学习笔记》是一本专为Python初学者设计的教程,作者王纯业以其简洁明了的写作风格,使得这本相对较为薄的书籍成为了初学者掌握Python编程的理想选择。这本书深入浅出地介绍了Python的基础知识,包括...
文章最后推荐了一本关于正则表达式的书《精通正则表达式第三版》,作者是Jeffrey E. F. Friedl,余晟翻译。这本书对于深入学习正则表达式有很大的帮助。 ### 实际应用注意事项 在实际应用中,处理文章中的图片需要...
Elasticsearch学习笔记 Elasticsearch(以下简称ES)是当前最流行的搜索引擎之一,本文旨在通过对ES的基本操作和查询语法的介绍,帮助读者快速入门和精通ES。 批量操作 ES提供了多种批量操作方式,包括通过GET _...
在urls.py文件中定义URL模式,并通过正则表达式或其他方式匹配请求。 5. **表单处理** Django提供了强大的表单处理能力,可以自定义表单类,自动处理数据验证、渲染HTML和处理POST数据。通过`forms.py`文件定义...
- 正则表达式:学习正则表达式的语法,进行复杂字符串匹配和替换。 6. **文件与目录操作** - 文件读写:file_get_contents、fopen、fwrite、fclose等函数的应用。 - 目录操作:mkdir、rmdir、scandir等函数,...
- `grep` 是一个强大的文本搜索工具,它能够使用正则表达式搜索文本,并把匹配的行打印出来。 - 管道(`|`)允许将一个命令的输出作为另一个命令的输入。 #### 系统信息 - `man` 命令提供命令的手册页,例如 `man ...
- `grep`: 在文件中搜索匹配正则表达式的行。 - `find`: 查找文件。 - **用户权限**: - 文件权限: 读(read)、写(write)、执行(execute)。 - 用户分类: 普通用户、超级用户(root)。 - 权限更改: `chmod`、`...
A第二章 Linux基本操作和自己动手组装服务器 B第三章 Linux基本命令操作 C第四章 文件的基本管理和XFS文件系统备份...V第二十三章 expect-正则表达式-sed-cut的使用 W第二十四章 Shell中色彩处理和awk使用技巧 。。。
1. "Python学习笔记.pdf":这可能是一份个人或集体编写的Python学习笔记,通常会涵盖基础语法、常用库的使用、编程实践等方面,可能是初学者入门或进阶学习的好帮手。 2. "Dive Into Python中文版.rar":这是Python...
深入java虚拟机 源码 Catalog 奔跑吧 ANSIBLE 分布式服务架构....大型网站技术架构:核心原理与案例分析 ...精通正则表达式_中文版 Roy_Thomas_Fielding博士论文REST(中文版) 图解TCPIP TCP-IP详解 从PAXOS到ZOOKEEP
7. **字符串与正则表达式**:掌握字符串操作函数和正则表达式的使用,进行文本处理和匹配。 【PHP进阶篇】 1. **面向对象编程**:讲解类、对象、属性、方法、继承、封装、多态等面向对象概念,以及抽象类和接口的...
8. **字符串处理**:掌握字符串的拼接、格式化、查找、替换等方法,以及正则表达式,这对于处理文本数据尤其有用。 9. **网络编程**:学习如何使用Python进行网络通信,如HTTP请求、套接字编程等。 10. **并发编程...
《Python小白到大牛》是一本详尽的Python学习指南,旨在帮助初学者从零基础逐渐精通Python编程。这本书按照四个部分逐步展开:基础、进阶、实用库和项目实战,覆盖了Python语言的各个方面。 在第一篇Python基础中,...
学习者将学习到requests库用于发送HTTP请求,BeautifulSoup或PyQuery库解析HTML文档,以及使用正则表达式或lxml库进行数据提取。同时,了解如何处理反爬策略,如设置User-Agent、处理验证码和使用代理IP,以及存储和...