FME 正则表达式的用法

2018-10-24  本文已影响0人  紫菜_d3a0

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。FME 也支持正则表达式,相关的 FME 转换器包括 Tester,TestFilter,StringSearcher,StringReplacer 等。FME 还提供 Regular Expression Editor,如下图所示:

这里我们就以此介绍上图中正则表达式的用法。

[abc]

表示匹配字符 a,字符 b,或字符 c。不需要 abc 是连续的。如下图:

[^abc]

与 [abc] 正好相反,表示匹配非 a,b,c 的任意字符。如下图:

[a-z]

表示匹配 a-z 的任意字符,或者通俗点说,只要包含小写字母就会匹配。如下图:

[a-zA-Z]

表示匹配 a-z 以及 A-Z 的任意字符,通俗点说,就是匹配所有的字母(含大写与小写),也可以写成 [A-Za-z],两者是等价的。

^

匹配输入字符串的开始位置。^ 字符在方括号中使用,表示不接受方括号中的字符集,如 [^abc]。

要匹配 ^ 字符本身,请使用 \^

$

匹配输入字符串的结尾位置。即从输入字符串的结尾搜索,看是否符合正则表达式。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$

上述情况中,如果正则表达式为 (string)$,那么匹配不成功。

.

匹配除换行符 \n 之外的任何单字符(含空格)。要匹配 .,请使用 \.

\s

匹配任何空白字符,包括空格、制表符、换页符等等。如下图,最后一个匹配项为制表符。

\S

匹配任何非空白字符。使用上图中同样的字符串,匹配结果如下(最后竖线部分为光标闪烁,并没有 | 字符):

\w

匹配任何字符(含字母、数字、下划线)。

\d

匹配任何数字。

(a|b)

指明两项之间的一个选择。要匹配 |,请使用 |。

a?

匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}。

a*

匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

a+

匹配前面的子表达式一次或多次。例如,zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

a{n}

n 是一个非负整数。匹配确定的 n 次。如下图:

对于 6,7,8 三种情况,其实是匹配了两次 a{3}。可以预想,对于 9:aaaaaaaaa 将匹配三次 a{3}。

a{n,}

n 是一个非负整数。表示至少匹配 n 次。如下图:

a{0,} 等价于 a*,即匹配前面的子表达式零次或多次。

a{n,m}

m 和 n 均为非负整数,其中 n <= m。最小匹配 n 次,且最多匹配 m 次。如下图:

a{3,6} 将匹配 "8:aaaaaaaa" 中的前 6 个 a。

a{0,1} 表示匹配 a 零次或一次,其实就是匹配单个字母 a,其效果 a? 是一样的,即匹配前面的子表达式零次或一次。

上一篇下一篇

猜你喜欢

热点阅读