转载请注明:原创作者:ice_software涵;原文链接:https://mp.csdn.net/console/editor/html/105284887,蟹蟹!
1.1 正则表达式简介正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。(360百科简介:https://baike.so.com/doc/4934015-5154299.html)
? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像 data(\w)?\.dat 可查找文件:
data.dat data1.dat data2.dat datax.dat dataN.dat
使用 * 字符代替 ? 字符扩大了找到的文件的数量。data.*\.dat 匹配下列所有文件:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
虽然这种搜索方法很有用,但它还是有限的。通过理解 * 通配符的工作原理,引入了正则表达式所依赖的概念,但正则表达式功能更强大,而且更加灵活。而正则表达式的使用,可以通过简单的办法来实现强大的功能。
在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度。
如:匹配以数字开头,并以 abc 结尾的字符串。
var str = "123abc";
var patt1 = /^[0-9]+abc$/;
document.write(str.match(patt1));
可获得匹配的表达式:
123abc
1.2 正则表达式的发展历史正则表达式的"祖先"可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为"正则集的代数"的表达式,因此采用"正则表达式"这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。
如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重重要部分。
1.3 为什么使用正则表达式?典型的搜索和替换操作要求提供与预期的搜索结果匹配的确切文本。虽然这项技术对对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
(1)通过使用正则表达式,可以:
- 测试字符串内的模式 (测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证) (正则表达式测试在线工具:https://tool.oschina.net/regex/)
- 替换文本 (识别文档中的特定文本,完全删除该文本或者用其他文本替换它)
- 基于模式匹配从字符串中提取子字符串 (查找文档内或输入域内特定的文本)
(2)总的来说,正则表达式的特点:
- 1. 灵活性、逻辑性和功能性非常强;
- 2.可以迅速地用极简单的方式达到字符串的复杂控制。
- 3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
您可能需要搜索整个网站,删除过时的材料,以及替换某些 HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。
1.4 正则表达式的应用领域目前,正则表达式已经在很多软件中得到广泛的应用,包括 *nix(Linux, Unix等)、HP 等操作系统,PHP、C#、Java 等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
(1)正则表达式语法支持情况
命令或环境.[ ]^$\( \)\{ \}?+|( )vi√√√√√ Visual C++√√√√√ awk√√√√ awk是支持该语法的,只是要在命令 行加入 --posix or --re-interval参数即可,可见 man awk中的interval expression√√√√sed√√√√√√ delphi√√√√√ √√√√python√√√√√√√√√√java√√√√√√√√√ √ javascript√√√√√ √√√√php√√√√√ perl√√√√√ √√√√C#√√√√ √√√√(2)常见命令或环境的知识拓展
- C# 正则表达式 详见C# 正则表达式(简介+字符转义+字符类+定位点+...)https://mp.csdn.net/console/editor/html/105287836 有专门介绍。
- Java 正则表达式 详见Java正则表达式(简介+捕获组+语法+Matcher 类的方法+..干货!!.) https://mp.csdn.net/console/editor/html/105291177专门有介绍。
- JavaScript RegExp对象 详见JavaScript RegExp 对象(修饰符+方括号+属性&方法....RegExp全集!)https://mp.csdn.net/console/editor/html/105291498有专门介绍。
- Python 正则表达式 详见(待更新)。
- Ruby 正则表达式 详见Ruby 正则表达式(介绍+语法+模式+实例+....++强烈推荐!!) https://mp.csdn.net/console/editor/html/105289239有专门介绍。