学习自 Speech and language processing 3rd ed
https://web.stanford.edu/~jurafsky/slp3/
注:以下双斜线中间的都表示匹配模式 /*/
1.基础正则表达式模式
输入你想要匹配的字符
注意:正则表达式是大小写敏感的,若现在想匹配W或w,可以使用 /[Ww]/ 做匹配
方括号[]中间的内容只要匹配其中的一个就算匹配成功
若觉得此处的/[1234567890]/过于麻烦,可以简化为/[0-9]/,就是在中间加一短横,同样,所有的大写字母可以简化成/[A-Z]/
那如果我们想要匹配的是 非大写字母 呢,我们可以在中括号最前面加一个^符号,比如/[^A-Z]/ 就表示不匹配所有的大写字母,如果,^符号在匹配段的中间的话,^表示自己本身,见下图
注意:在匹配没有方括号[]表示的模式时,就是匹配该模式本身,^表示的是自己本身,而不是表示非,再者,若^在[]里面,但不是在开头,^也表示自己本身
若我们想匹配 woodchuck和woodchucks,怎么办呢?我们可以使用 ?, ?表示之前的一个字符由零个或者一个,见下图
那么,如果我们想匹配如下字符:
baa!
baaa!
baaaa!
baaaaa!
…
我们可以使用星号 * ,表示之前的一个字符有零个或者多个,因此,若我们要表示连续一个或多个a,我们就要使用 /aa*/ 的方式匹配,为什么不能用a*来匹配呢?这样有时会十分不方便,于是我们就有了另外一个符号 加号+ ,加号+表示一个或多个
现在,若我们想匹配上面的那段字符,可以使用/baaa*!/ 或者 /baa+!/ 进行匹配
另外一个重要的符号是 点号 . ,点号是一个通配符,表示任何单个字符(除了回车符),见下图
那么,现在,我们可以将点号和星号联合起来,表示任意长度的任意符号串了,
比如,我们想要匹配开头和结尾都是www的行,我们可以用 /www.*www/
锚(anchor)
又轮到 ^登场了,^可以匹配句子开头,比如我们要找以 The 开头的句子,使用 /^The/ 进行匹配,另一个anchor美元符号 ,这个表示句子的结