在 链式构建器中,您可以使用正则表达式 (regex) 运算符来匹配文本字符串中的字符,例如定义以下模式:
常用运算符
要定义匹配模式,可以使用以下常用运算符:
| 运算子 | 描述 | 范例 | 返回 |
|---|---|---|---|
^ |
匹配字符串的开头 | ^abc |
abc, abcdef..., abc123 |
$ |
匹配字符串的结尾 | abc$ |
my:abc, 123abc, theabc |
. |
可匹配任何字符作为通配符 | a.c |
abc, asc, a123c |
| |
或字符 | abc|xyz |
abc 或 xyz |
(...) |
捕获括号中的值 | (a)b(c) |
a 和 c |
[...] |
匹配括号内的任何内容 | [abc] |
a、 b或 c |
[az] |
匹配 a 和 z 之间的小写字符 | [bz] |
bc, mind, xyz |
[0-9] |
匹配 0 到 9 之间的任何数值。 | [0-3] |
3201 |
{x} |
匹配的确切次数 | (abc){2} |
abcabc |
{x,} |
匹配所需的最少次数 | (abc){2,} |
abcabcabc |
* |
匹配星号 (*) 处的任何内容,或进行“贪婪”匹配。 | ab*c |
abc, abbcc, abcdc |
+ |
与“+”号之前的字符匹配一次或多次 | a+c |
ac、 aac、 aaac |
? |
匹配问号 (?) 之前的字符,匹配次数为零或一次,或者进行“非贪婪”匹配。 | ab?c |
ac, abc |
/ |
转义 / 后面的字符,或创建转义序列 | a/bc |
ac,空格与 /b匹配 |
要在模式中使用运算符的字面字符,请使用 而不是 作为正则表达式:
- 对于抑扬符(
^)、句点(.)、左括号([)、美元符号($)、左圆括号或右圆括号(() 或 ())、竖线(|)、星号(*)、加号(+)、问号(?)、左大括号({)或反斜杠(\),后面要跟转义运算符(\)。 - 对于结束括号(
])或结束大括号(}),将其设为第一个字符,无论是否带有开头的^。 - 对于破折号(
-),使其成为第一个或最后一个字符,或者范围的第二个端点。
提示: 方括号内的所有字符均按字面意思理解,不是正则表达式运算符。例如, [*\+?{}.] 匹配方括号内的任何字面字符。
匹配字符串的开头或结尾(^ 和 $)
要匹配字符串开头或结尾的模式,请分别使用运算符 ^ 和 $。例如:
| 范例 | 比赛 |
|---|---|
^这 |
任何以 开头的字符串 |
绝望的 |
任何以 结尾的绝望字符串 |
^abc$ |
以 abc开头和结尾的字符串——完全匹配 |
提示: 如果既不使用 ^ 也不使用 $ ,则该模式匹配任何包含 指定字符的字符串。例如, notice—不带 ^ 或 $—返回包含 notice的任何字符串。
匹配字符(*、 +和 ?)
要根据特定字符匹配模式,请在字符后跟运算符 *、 +或 ?。这些运算符分别表示字符在匹配中应出现的次数——零次或多次、一次或多次,或一次或零次。例如:
| 范例 | 比赛 |
|---|---|
ab* |
包含方括号 a,后跟零个或多个方括号 bs—ac, abc或 abbc的字符串 |
ab+ |
包含方括号 a,后跟一个或多个方括号 bs—abc或 abbc,但不包括方括号 ac |
ab? |
包含方括号 a,后跟零个或一个方括号 bs—ac或 abc,但不包括方括号 abc |
a?b+$ |
以一个或多个方括号 b结尾的字符串,可以有也可以没有前面的方括号 a;例如, ab、 abb、 b或 bb,但不能是 aab 或 aabb。 |
匹配字符频率({...} 或 (...))
要根据单个字符出现的频率来匹配模式,请在其后加上实例的数量或范围,并用花括号({...})括起来。例如:
| 范例 | 比赛 |
|---|---|
ab{2} |
一个字符串,包含 a,后跟恰好 2 个 bs—abb |
ab{2,} |
包含 a的字符串,后跟至少 2 个 bs—abb, abbbb, 等。 |
ab{3,5} |
包含一个方括号 和一个方括号,后跟三到五个方括号 ] 的字符串——abbb、 abbbb或 abbbbb |
提示: 始终指定范围的第一个数字——{0,2}, 而不是 {,2}。你可以分别使用运算符 *、 ] +或 [] ?来代替范围 {0,} [、[ {1,}或 {0,1}
。 {0,1}要根据字符序列出现的频率来匹配模式,请将其用括号 ((...)] 包裹起来。例如, a(bc){1,5} 匹配一个包含 a的字符串,后面跟着一到五个 bc实例。
匹配多个模式之一(|)
要匹配多个模式之一(例如 this OR that) ,请使用 OR 运算符 |。例如:
| 范例 | 比赛 |
|---|---|
你好 |
包含 “ hi ”或 “ hello”的字符串 |
(b|cd)ef |
包含 bef 或 cdef的字符串 |
(a|b)*c |
一个字符串,由交替的 a和 b组成,以 c结尾。 |
匹配任意字符(.)
要表示模式中要匹配的任何字符,请使用通配符运算符 .. 例如:
| 范例 | 比赛 |
|---|---|
a.[0-9] |
一个字符串,包含一个方括号 和一个方括号,后跟任意字符和一个数字。 |
^.{3}$ |
任意三个字符的字符串 |
匹配字符位置([...])
要根据字符的位置匹配模式,请使用方括号([...])。例如:
| 范例 | 比赛 |
|---|---|
[ab] |
包含 a 或 b的字符串;等价于 a|b |
[广告] |
包含小写字母 |
^[a-zA-Z] |
以任意字母开头的字符串,不区分大小写。 |
[0-9]% |
包含任意单个数字后跟百分号的字符串 |
,[a-zA-Z0-9]$ |
以逗号结尾,后跟任意字符的字符串 |
注意: 方括号内的所有字符均按字面意思理解,不是正则表达式运算符。例如, [*\+?{}.] 匹配方括号内的任何字面字符。
匹配不需要的字符([^...])
要匹配 不包含 字符的模式,请以 ^ 运算符开始序列,并将其用括号括起来。例如, %[^a-zA-z]% 匹配两个百分号之间包含任何非字母字符的字符串。