自然语言处理笔记(day1)
第2章 正则表达式、文本规范化、编辑距离
2.1 正则表达式
2.1.1 基本正则表达式模式
字符串匹配:搜索首次匹配的字符串,大小写区分匹配。
[ ] ,[ - ] 可以对括号里面的字符串进行指定的搜索,搜索出[ ]括号中任意包含的某一个字符。
“^” 在[ ]中表示非、否定
/[ˆA-Z]/ 表示匹配不是大写字母的字符
/[eˆ] 表示匹配 ‘e’ 或者 ’^‘
/aˆb/ 表示匹配 ”a^b“
/colou?r/ 表示?前一个字符没有或者?后面的字符没有。
/aa*/ 匹配一个或多个a的正则表达式 。
/[ab]*/ 表示“0个或多个a或b”(而不是“0个或多个右方括号”)
/[ 0-9 ][ 0-9 ]*/ 表示仅限整数的一串字符串
/[0-9]+/ 表示仅限整数的一串字符串
/baaa*!/ or /baa+!/ 表示
baa!
baaa!
baaaa!
baaaaa!
.........
/beg.n/ 表示“beg” 和 “n” 中间可以是任意字符(回车除外).可以指定除回车以外的任意字符。
/.*/ 表示任意字符串
/ˆ 单独的“^”表示这一行的开始
/$ 表示一行的结尾
\b 表示单词边界
\B 表示非单词边界
2.1.2 分离、分组和优先级
“|” 析取
/cat|dog/ 表示匹配字符串cat 或者 dog
/gupp(y|ies) 表示匹配 guppy 或者 guppies
模式匹配时会尽可以的匹配最长的字符串
2.1.2 一个简单的例子(匹配精度一步步提高的过程)
情况一:
/the/ 缺少The
/[T/t]he/ the为嵌入的字符时匹配错误
/\b[T/t]he\b/ 为the增加了边界,成功
情况二:
/the/ 缺少The
/[T/t]he/ the为嵌入的字符时匹配错误
/[^a-zA-Z][T/t]he[^a-zA-Z]/ 当the为首单词时,不能匹配,要求了the之前或之后必须有字符(非字母)
/[^|A-Za-z][T/t]he[$|A-Za-z]/ 要求了the可以为首字母,成功