浅析正则表达式
正则表达式目前在很多软件中得到广泛应用,包括Linux, Unix等操作系统,VBScript, Java, PHP等开发环境,以及很多应用软件都能应用到正则表达式。
1正则表达式的历史1956年,一位叫Stephen Kleene的数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为"正则集的代数"的表达式,因此采用"正则表达式"这个术语。
随后,发现可以将这一工作应用于使用Ken Thompson的计算搜索算怯的一些早期研究,Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
2正则表达式定义正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
列目录肘,dir*. exe中的*.exe就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。则表达式是由普通字符(a-z)以及特殊字符(也叫元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
2.1普通字符囱所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
2.2特殊字符
特殊字符,指有特殊含义的字符,如上面说的"*.exe"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。Is \*.exe。
正则表达式里的特殊字符$,(),*,+,.,[,?,\^\|
$匹配输入字符串的结尾位置。()标记一个子表达式的开始和结束位置。
匹配前面的子表达式零次或多次。+匹配前面的子表达式一次或多次。
.匹自己除换行符\n之外的任何单字符。{标记一个中括号表达式的开始。
?匹配前面的子表达式零次或一次。{标记限定符表达式的开始。
\将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
^匹配输入字符串的开始位置,除非在方括号表达式中使用,笔耕文化传播,此时它表示不接受该字符集合。|指明两项之间的一个选择。
2.3限定符限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
有*,+,?, {n}, {n,}, {n, m}共6种。
*匹配前面的子表达式零次或多次。{n}
+匹配前面的子表达式一次或多次。?匹配前面的子表达式零次或一次。
{n} n是一个非负整数。匹配确定的n次。
{n,}且是一个非负整数。至少匹配n次。
{n,m} m和n均为非负整数,且n<=m。最少匹配n次且最多匹配m次。
2.4定位符用来描述字符串或单词的边界, ^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。
本文由整理发布,转载请注明出处!
本文编号:5634
本文链接:https://www.wllwen.com/qitalunwen/5634.html