老同学表格定制专家WPS / Excel 公式助手

知识库

把公式这件事讲明白:4 节入门、81 个快捷键、9 类报错、50 条正则。

零基础可读 效率技巧 报错对照

用于 WPS 的 REGEXP 函数:=REGEXP(文本, 正则, 模式, 替换内容)

字符集
[]

匹配集合中任意单个字符

[abc] 匹配 "a"、"b"、"c"

通配符
.

匹配任意单个字符(除换行符,部分模式下可匹配换行)

a.b 匹配 "a+b"、"a\nb"(开启 DOTALL 模式)

锚点
$

匹配字符串结束位置(多行模式下匹配行尾)

a$ 匹配 "ba" 中的 "a"

^

匹配字符串开始位置(多行模式下匹配行首)

^a 匹配 "abc" 中的 "a"

\A

匹配字符串绝对开始位置(不受多行模式影响)

\Aa 仅匹配以 "a" 开头的字符串

\Z

匹配字符串绝对结束位置(不受多行模式影响,允许末尾换行)

a\Z 匹配 "a\n" 中的 "a"

\z

匹配字符串绝对结束位置(严格匹配最后一个字符)

a\z 不匹配 "a\n"(因末尾有换行)

量词
+

匹配前面元素 1 次或多次(贪婪模式)

a+ 匹配 "a"、"aaa"

*

匹配前面元素 0 次或多次(贪婪模式)

a* 匹配 ""、"a"、"aaa"

?

匹配前面元素 0 次或 1 次(贪婪模式)

a? 匹配 ""、"a"

字符集(范围)
[a-z]

匹配指定范围内的字符(小写字母)

[a-c] 匹配 "a"、"b"、"c"

[A-Z]

匹配指定范围内的字符(大写字母)

[A-C] 匹配 "A"、"B"、"C"

[0-9]

匹配指定范围内的字符(数字)

[0-2] 匹配 "0"、"1"、"2"

汉字简繁体范围
[一 - 龥]

匹配从 "一" 到 "龥" 的所有汉字(包含大部分简繁体)

[一-龥]{2,4} 匹配 "中国"、"中华民国"

字符集(否定)
[^]

匹配不在集合中的任意单个字符

[^abc] 匹配 "d"、"1"、"#"

逻辑操作符
|

匹配多个表达式中的任意一个

a|b 匹配 "a" 或 "b"

量词(非贪婪)
*?

匹配前面元素 0 次或多次(非贪婪模式)

"a*?" 在 "aaa" 中匹配 ""

+?

匹配前面元素 1 次或多次(非贪婪模式)

"a+?" 在 "aaa" 中匹配 "a"

??

匹配前面元素 0 次或 1 次(非贪婪模式)

"a??" 在 "a" 中匹配 ""

{n}?

匹配前面元素恰好 n 次(非贪婪模式,效果同 {n})

a{2}? 匹配 "aa"

{n,}?

匹配前面元素至少 n 次(非贪婪模式)

"a{2,}?" 在 "aaa" 中匹配 "aa"

{n,m}?

匹配前面元素至少 n 次,最多 m 次(非贪婪模式)

"a{2,3}?" 在 "aaa" 中匹配 "aa"

字符类(POSIX)
[[:alpha:]]

匹配任意字母(等价于 [A-Za-z])

[[:alpha:]] 匹配 "a"、"Z"

[[:digit:]]

匹配任意数字(等价于 [0-9])

[[:digit:]] 匹配 "3"、"9"

[[:alnum:]]

匹配字母或数字(等价于 [A-Za-z0-9])

[[:alnum:]] 匹配 "a"、"5"

预定义字符类
\d

匹配任意数字(等价于 [0-9])

\d 匹配 "0"、"9"

\D

匹配任意非数字(等价于 [^0-9])

\D 匹配 "a"、"#"

\w

匹配字母、数字或下划线(等价于 [A-Za-z0-9_])

\w 匹配 "a"、"5"、"_"

\W

匹配非字母、数字、下划线(等价于 [^A-Za-z0-9_])

\W 匹配 ""、"@"

\s

匹配任意空白字符(空格、制表符、换行等)

\s 匹配 ""、"\t"、"\n"

\S

匹配任意非空白字符

\S 匹配 "a"、"1"、"#"

边界匹配
\b

匹配单词边界(单词与非单词字符之间的位置)

\bcat\b 匹配 "cat",不匹配 "category"

\B

匹配非单词边界

\Bcat\B 匹配 "category" 中的 "cat"

分组与捕获
( )

定义子表达式并捕获匹配结果

(ab) 匹配 "ab" 并捕获该值

反向引用
\1, \2...

引用第 n 个捕获分组的匹配结果

(a)\1 匹配 "aa"(\1 引用第一个分组 "a")

分组(非捕获)
(?:)

定义子表达式但不捕获匹配结果

(?:ab) 匹配 "ab" 但不单独捕获

量词(精确)
{n}

匹配前面元素恰好 n 次

a{2} 匹配 "aa"

量词(范围)
{n,}

匹配前面元素至少 n 次

a{2,} 匹配 "aa"、"aaa"

{n,m}

匹配前面元素至少 n 次,最多 m 次

a{2,3} 匹配 "aa"、"aaa"

转义字符
\

将特殊字符转为普通字符,或激活预定义序列

\. 匹配 ".",\n 匹配换行符

零宽断言(正向预查)
(?=pattern)

匹配后面满足 pattern 的位置(不消费字符)

a(?=b) 匹配 "ab" 中的 "a"

零宽断言(负向预查)
(?!pattern)

匹配后面不满足 pattern 的位置(不消费字符)

a(?!b) 匹配 "ac" 中的 "a"

零宽断言(正向后查)
(?<=pattern)

匹配前面满足 pattern 的位置(不消费字符)

(?<=a)b 匹配 "ab" 中的 "b"

零宽断言(负向后查)
(?<!pattern)

匹配前面不满足 pattern 的位置(不消费字符)

(?<!a)b 匹配 "cb" 中的 "b"

模式修饰符(内联)
(?i)

开启不区分大小写模式(作用于后续表达式)

(?i)abc 匹配 "ABC"、"Abc"

(?s)

开启 DOTALL 模式(. 可匹配换行符)

(?s)a.b 匹配 "a\nb"

(?m)

开启多行模式(^ 匹配行首,$ 匹配行尾)

(?m)^a 匹配多行文本中每行的开头 "a"

(?x)

开启忽略空格模式(忽略表达式中的空格,可添加注释)

a b(带 (?x) 时等价于 "ab")

Unicode 属性
\p{Name}

匹配具有指定 Unicode 属性的字符(如 \p {Letter} 匹配任意字母)

\p{Digit} 匹配任意语言的数字字符

Unicode 属性(否定)
\P{Name}

匹配不具有指定 Unicode 属性的字符

\P{Letter} 匹配非字母字符