《Using OpenRefine》翻译~18

来源:互联网 发布:华人医师数据库 编辑:程序博客网 时间:2024/05/22 07:41

上一篇:《Using OpenRefine》翻译~17

锚符

有时候,你不是要表达有多少字符被匹配,而是想确定字符串哪个位置被匹配。这时候就可以使用锚符anchors。补字号^表示必须在开始匹配,美元符号$表示必须在最后匹配。(不要与方括号[]内的补字符^搞混,这个表示的是否定意义,这和括号外的^意义不一样)。另外,\b可以指定匹配的区间的开始和结束。

• ^\d匹配开始为一个数字。

• ^\d$匹配结束为一个数字。

• ^\d.*\d$匹配开始和结束各为一个数字。这个表达式的含义是:开始为一个数字,0个或更多的任意字符(表达式中的点),结尾为一个数字。如果我们使用^\d+$,则表示这是一个数字(任意长度)。

• \b\d{3}\b匹配至少含有三位的数字,因为\b设定了区间。如果某个内容包含四位数字但是没有三位数字,那么将不匹配(如果移除\b,则会匹配)。

• ^\d{3}\b匹配开始为三位数字,第四位为非数字。

 

 

可选符

我们已经学会了如何指定可选内容。方括号可以让我们选择其中字符中的任意一个:[a-z123]匹配任意一个小写字母或数字1或2或3。大多数情况,待选的内容可能不止一个字符,有可能为多个字符。这种情况下,管道符”|”就派上用场了,其起的就是或操作的作用:

• glass|wood|steel 将匹配glass或者wood或者steel

• \d+|many|few 匹配任意数字或者many或者few

• N\d{5},|N\d{8}, 匹配以N开头以“,”结尾,中间要么是五位数要么是八位数,其他不匹配(如中间是六位数就不匹配)

 

 

组符

最后需要介绍的就是组符groups,如果对一组字符应用数量符,就需要把他们用圆括号“( )”括起来:

• la+匹配了la,laa,laaa等等。而(la)+匹配了la,lala,lalala等等。

• analyz|se会匹配任意包含analyz或者se的文本。这可能并不是特别有用。而analy(z|s)e 会匹配包含analyze 或者 analyse。这里其实等同于analy[zs]e,我们只需要对z和s二选一。而analyz(e|ing)将匹配包含analyze 或 analyzing.

• 因为原括号有特殊意义,所以如果括号仅仅是普通字符,那么我们就需要使用反斜杠指出。

 

 

下表列出了正则表达式中的一些特殊符号应用:



下一篇:《Using OpenRefine》翻译~19


原创粉丝点击