<
e路发娱乐先来看一个让人震撼的小故事,故事来自知乎问题PC用户的哪些行为让你当时就震惊了?
同学在一个化妆品公司上班,旁边一个大妈(四十多岁)发给他一个exl表,让他在里面帮忙找一个经销商的资料。
表格里面大约有几百个客户资料,我同学直接筛选填入信息,然后没找到,就转头告诉大妈,说这个表里没有。
大妈很严厉的批评了我同学,说年轻人干工作一定要沉的住气,心浮气躁可不行。这才几分钟啊,我才看了二十行,你怎么就找完了。
同学过去一看,大妈在一行一行的精挑细选,顿时一身冷汗。把筛选办法告知后,大妈不但不领情,还召集办公司其他老职员,一起声讨我同学,我们平时都是这么找的,你肯定是偷工减料,我们找一个小时没找完,你几分钟就找完了。
不知道是否确有此事,不过看起来好吓人的样子。仔细想想,大多数人都是用以往的经验来分析遇见的新问题的。就上面的大妈而言,在接触计算机之前的几十年里,她面对的都是纸质的客户资料,此时,要查找某一客户资料,只能一行一行看下去了。
现在,虽然有了计算机,但是只是简单的把它看做一个比较大的纸质资料库罢了,并没有认识到计算机的强大之处。这里的强大主要就是说计算机在处理电子文档时的强大的搜索功能了。
当然,对于大部分年轻人来说,计算机中的搜索功能是再熟悉不过了。我们可以在word、excel、网页中搜索特定内容,可以在整个计算机文件系统中搜索文件名,甚至搜索文件中的内容(Win下的everthing,Mac下的Spotlight)。
这些搜索主要用到了两种技术:
正则表达式介绍简单来说,正则表达式就是用来匹配特定内容的字符串。举个例子来讲,如果我想找出由a、b组成的,以abb结尾的字符串,比如ababb,那么用正则表达式来表示就是[ab]*abb。
正则表达的理念是由数学家Stephen Kleene在1950年首次提出来的,开始时主要用于UNIX下文本编辑器ed和过滤器grep中。1968年开始广泛应用于文本编辑器中的模式匹配和编译器中的词法分析。1980年,一些复杂的正则表达语句开始出现在Perl中,使用了由Henry Spencer实现的正则表达解析器。而Henry Spencer后来写了更高效的正则解析器Tcl,Tcl混合使用了NFA(非确定有限自动机)/DFA(确定有限自动机)来实现正则表达语法。
正则表达式有以下优点:
下面用python在”aababbaxz abcabb abbbbabb”中搜索[ab]*abb:
import re content = "aababbaxz abcabb abbbbabb" pattern = re.compile("[a|b]*abb") print pattern.findall(content) # outputs: ['aababb', 'abb', 'abbbbabb']
1
2
3
4
5
6import re
content = "aababbaxz abcabb abbbbabb"
pattern = re.compile("[a|b]*abb")
print pattern.findall(content)
# outputs: ['aababb', 'abb', 'abbbbabb']
其实,正则表达式不只用于文本搜索和模糊匹配,还可以用于以下场景:
e路发娱乐先来看一个让人震撼的小故事,故事来自知乎问题PC用户的哪些行为让你当时就震惊了?
同学在一个化妆品公司上班,旁边一个大妈(四十多岁)发给他一个exl表,让他在里面帮忙找一个经销商的资料。
表格里面大约有几百个客户资料,我同学直接筛选填入信息,然后没找到,就转头告诉大妈,说这个表里没有。
大妈很严厉的批评了我同学,说年轻人干工作一定要沉的住气,心浮气躁可不行。这才几分钟啊,我才看了二十行,你怎么就找完了。
同学过去一看,大妈在一行一行的精挑细选,顿时一身冷汗。把筛选办法告知后,大妈不但不领情,还召集办公司其他老职员,一起声讨我同学,我们平时都是这么找的,你肯定是偷工减料,我们找一个小时没找完,你几分钟就找完了。
不知道是否确有此事,不过看起来好吓人的样子。仔细想想,大多数人都是用以往的经验来分析遇见的新问题的。就上面的大妈而言,在接触计算机之前的几十年里,她面对的都是纸质的客户资料,此时,要查找某一客户资料,只能一行一行看下去了。
现在,虽然有了计算机,但是只是简单的把它看做一个比较大的纸质资料库罢了,并没有认识到计算机的强大之处。这里的强大主要就是说计算机在处理电子文档时的强大的搜索功能了。
当然,对于大部分年轻人来说,计算机中的搜索功能是再熟悉不过了。我们可以在word、excel、网页中搜索特定内容,可以在整个计算机文件系统中搜索文件名,甚至搜索文件中的内容(Win下的everthing,Mac下的Spotlight)。
这些搜索主要用到了两种技术:
- 正则表达式
- 数据库索引
正则表达式介绍简单来说,正则表达式就是用来匹配特定内容的字符串。举个例子来讲,如果我想找出由a、b组成的,以abb结尾的字符串,比如ababb,那么用正则表达式来表示就是[ab]*abb。
正则表达的理念是由数学家Stephen Kleene在1950年首次提出来的,开始时主要用于UNIX下文本编辑器ed和过滤器grep中。1968年开始广泛应用于文本编辑器中的模式匹配和编译器中的词法分析。1980年,一些复杂的正则表达语句开始出现在Perl中,使用了由Henry Spencer实现的正则表达解析器。而Henry Spencer后来写了更高效的正则解析器Tcl,Tcl混合使用了NFA(非确定有限自动机)/DFA(确定有限自动机)来实现正则表达语法。
正则表达式有以下优点:
- 容易理解
- 能高效实现
- 具有坚实的理论基础
- [a-z]表示所有小写字母,[0-9]表示所有数字,[amk]表示a、m或k。
- +表示字符重复1或者多次,*表示字符重复0或者多次。在使用+或者*时,正则表达式遵从maximal munch的原则,也就是说它匹配能够匹配到的最大字符串。
- a|z 表示匹配字符’a’或者’z’
- ?表示字符出现0次或者1次
- 是正则表达式中的escape符号,\*表示的就是’*’这个字符,而不是它在正则表达式中的功能。
- . 表示出了换行符之外的任何字符,而^表示出了紧接它的字符以外的任何字符
- ^ 匹配字符串的开始,$ 匹配字符串的结尾。
下面用python在”aababbaxz abcabb abbbbabb”中搜索[ab]*abb:
import re content = "aababbaxz abcabb abbbbabb" pattern = re.compile("[a|b]*abb") print pattern.findall(content) # outputs: ['aababb', 'abb', 'abbbbabb']
1
2
3
4
5
6import re
content = "aababbaxz abcabb abbbbabb"
pattern = re.compile("[a|b]*abb")
print pattern.findall(content)
# outputs: ['aababb', 'abb', 'abbbbabb']
其实,正则表达式不只用于文本搜索和模糊匹配,还可以用于以下场景:
- 合法性检查
- 文本的自动更正和编辑
- 信息提取
http://8ypytkjh.weebly.com/
http://srtfhty.weebly.com/
http://dghryjhnhjn.weebly.com/
http://46ryhgmukjh.weebly.com/
http://jniub80553.weebly.com/
http://uikltryh.weebly.com/
http://tyioupy.weebly.com/
http://gdjfyuhgkj.weebly.com/
http://tyuhjkuyj.weebly.com/
http://sryyyujk.weebly.com/
http://gfhghsdfg.weebly.com/
http://dsfgfhmgn.weebly.com/
http://tuyijy.weebly.com/
http://gghtufkj.weebly.com/
http://aqym2188.weebly.com/
http://aqym2188.weebly.com/
http://etrytui.weebly.com/
http://efyttyuyik.weebly.com/
http://rtyhyh.weebly.com/
http://dfgnhfm.weebly.com/
http://aetjgyj.weebly.com/
http://htrbgdf.weebly.com/
http://sgnstgngn.weebly.com/
http://aerdfhn.weebly.com/
http://wrytrhjt.weebly.com/
http://ofgp7620.weebly.com/
http://0-ytu.weebly.com/
http://4ewww212888com.weebly.com/
http://444wwwam8com.weebly.com/
http://srtfhty.weebly.com/
http://dghryjhnhjn.weebly.com/
http://46ryhgmukjh.weebly.com/
http://jniub80553.weebly.com/
http://uikltryh.weebly.com/
http://tyioupy.weebly.com/
http://gdjfyuhgkj.weebly.com/
http://tyuhjkuyj.weebly.com/
http://sryyyujk.weebly.com/
http://gfhghsdfg.weebly.com/
http://dsfgfhmgn.weebly.com/
http://tuyijy.weebly.com/
http://gghtufkj.weebly.com/
http://aqym2188.weebly.com/
http://aqym2188.weebly.com/
http://etrytui.weebly.com/
http://efyttyuyik.weebly.com/
http://rtyhyh.weebly.com/
http://dfgnhfm.weebly.com/
http://aetjgyj.weebly.com/
http://htrbgdf.weebly.com/
http://sgnstgngn.weebly.com/
http://aerdfhn.weebly.com/
http://wrytrhjt.weebly.com/
http://ofgp7620.weebly.com/
http://0-ytu.weebly.com/
http://4ewww212888com.weebly.com/
http://444wwwam8com.weebly.com/