正则表达式的功法大全,做NLP再也不怕搞不定字符串了

作者:媒体转发 时间:2018-10-09 16:37

字号
【新产品上线啦】51CTO播客,随时随地,碎片化学习

在自然语言处理中,很多时候我们都需要从文本或字符串中抽取出想要的信息,并进一步做语义理解或其它处理。在本文中,作者由基础到高级介绍了很多正则表达式,这些表达式或规则在很多编程语言中都是通用的。

正则表达式

正则表达式(regex 或 regexp)对于从文本中抽取信息极其有用,它一般会搜索匹配特定模式的语句,而这种模式及具体的 ASCII 序列或 Unicode 字符。从解析/替代字符串、预处理数据到网页爬取,正则表达式的应用范围非常广。

其中一个比较有意思的地方是,只要我们学会了正则表达式的语句,我们几乎可以将其应用于多有的编程语言,包括 JavaScript、Python、Ruby 和 Java 等。只不过对于各编程语言所支持的最高级特征与语法有细微的区别。

下面我们可以具体讨论一些案例与解释。

一、基本语句

1. 锚点:^ 和 $

^The        匹配任何以“The”开头的字符串 -> Try it! (https://regex101.com/r/cO8lqs/2) 

end$        匹配以“end”为结尾的字符串 

^The end$   抽取匹配从“The”开始到“end”结束的字符串 

roar        匹配任何带有文本“roar”的字符串 

2. 数量符:*、+、?和 {}

abc*        匹配在“ab”后面跟着零个或多个“c”的字符串 -> Try it! (https://regex101.com/r/cO8lqs/1) 

abc+        匹配在“ab”后面跟着一个或多个“c”的字符串 

abc?        匹配在“ab”后面跟着零个或一个“c”的字符串 

abc{2}      匹配在“ab”后面跟着两个“c”的字符串 

abc{2,}     匹配在“ab”后面跟着两个或更多“c”的字符串 

abc{2,5}    匹配在“ab”后面跟着2到5个“c”的字符串 

a(bc)*      匹配在“a”后面跟着零个或更多“bc”序列的字符串 

a(bc){2,5}  匹配在“a”后面跟着2到5个“bc”序列的字符串 

3. 或运算符:| 、 []

a(b|c)     匹配在“a”后面跟着“b”或“c”的字符串 -> Try it! (https://regex101.com/r/cO8lqs/3) 

a[bc]      匹配在“a”后面跟着“b”或“c”的字符串 

4. 字符类:\d、\d、\s 和 .

\d         匹配数字型的单个字符 -> Try it! (https://regex101.com/r/cO8lqs/4) 

\w         匹配单个词字(字母加下划线) -> Try it! (https://regex101.com/r/cO8lqs/4) 

\s         匹配单个空格字符(包括制表符和换行符)  

.          匹配任意字符 -> Try it! (https://regex101.com/r/cO8lqs/5) 

使用「.」运算符需要非常小心,因为常见类或排除型字符类都要更快与精确。\d、\w 和\s 同样有它们各自的排除型字符类,即\D、\W 和\S。例如\D 将执行与\d 完全相反的匹配方法:

\D         匹配单个非数字型的字符 -> Try it! (https://regex101.com/r/cO8lqs/6) 

为了正确地匹配,我们必须使用转义符反斜杠「\」定义我们需要匹配的符号「^.[$()|*+?{\」,因为我们可能认为这些符号在原文本中有特殊的含义。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接