主要来自于一个git上2w stars的一个项目https://github.com/ziishaned/learn-regex/blob/master/README.md。本来没打算总结的,顺便搞一下吧,正则表达式我觉得复习整理一下在处理自然语言问题还是有一些作用的。
关于regex的在线联系,这个网页做的还可以https://regex101.com/r/dmRygT/1
注: 下面例子中,callout里的""引号只是为了引用没有实际意思,可以删去。
正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
上图可以说的很清楚什么事正则表达式,以上的正则表达式可以接受 john_doe, jo-hn_doe, john12_as. 但不匹配Jo, 因为它包含了大写的字母而且太短了。
正则表达式其实就是在执行搜索时的格式,它由一些字母和数字组合而成。例如:一个正则表达式the,它表示一个规则:由字母t开始,接着是h,再接着是e。
<aside> 💡
</aside>
正则表达式123匹配字符串123,它逐个字符与输入的正则表达式作比较。
正则表达式是大小写敏感的,所以上面callout中的The不会匹配the。
正则表达式主要依赖于元字符,元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思。以下是一些元字符的介绍。这一块其实就是主要介绍了一下regex中的特殊字符,具体怎么用例子一看就明白了。
点运算符.
.是元字符中最简单的例子. .匹配任意单个字符, 但不匹配换行符. 例如, 表达式.ar匹配一个任意字符后面跟着是a和r的字符串.
<aside> 💡 ".ar" ⇒ The car parked in the garage.
</aside>
字符集[ ]
字符集也叫做字符类,方括号用来指定一个字符集. 在方括号中使用连字符来指定字符集的范围. 在方括号中的字符集不关心顺序. 例如, 表达式[Tt]he 匹配 the 和 The. 这里只匹配一个!!!!
<aside> 💡 "[Tt]he" => The car parked in the garage.
</aside>
<aside> 💡 "ar[.]" => A garage is a good place to park a car.
</aside>
否定字符集[^ ]
一般来说 ^ 表示一个字符串的开头, 但它用在一个方括号的开头的时候, 它表示这个字符集是否定的. 例如, 表达式[^c]ar 匹配一个后面跟着ar的除了c的任意字符.
<aside> 💡 "[^c]ar" => The car parked in the garage.
</aside>
这里表示除了c的任意一个字符,所以就有了par和gar.