最近在学NLP的相关方面的东西,处理数据时需要用到正则表达式,这里做个总结方便后面查询。
正则中的特殊字符
^,匹配字符串的开始部分,在[]中使用表示非,即匹配除了提及的条件以外的字符
$,匹配字符串的结尾部分
*,前面的字符出现零次或多次
+,前面的字符出现一次或多次
\,转义字符,加载特殊字符前用于匹配特殊字符
|,或
( ),标记一个字符串的开始和结尾位置
[],一般放置条件用于匹配某个字符,如匹配数字0~9,[0-9]
{},限定前面出现的字数,如a{1,} 等价于a+,a{1}相当于a,a{2,3}相当于aa或aaa
常用的匹配
匹配中文字符
[\u4e00-\u9fa5]
匹配数字
[0-9]
匹配英文字符
[a-zA-Z]
如果需要非中文、非数字、非英文
[^\u4e00-\u9fa5a-zA-Z0-9]
python Re模块
由于python也使用\转义字符,为了方便编写,最好在字符串前加r
re.match
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.
re.search
search工作方式与match类似,只是search从字符串的任意位置开始匹配,并返回第一个匹配的对象。
re.sub
用于匹配字符串并进行替换,如:
re.findall
查找所有满足正则表达式的字符串,返回一个数组。
re.split
这个方法非常强大,可以利用多个字符来切割字符串,如:
re.compile
用于编译正则表达式,生成一个正则表达式(Pattern)对象,供其他正则表达式函数使用。