在分段中使用正则表达式匹配
什么是正则表达式匹配?
正则表达式匹配允许您根据文本模式而不是精确值来过滤配置文件。这对于查找遵循特定格式的配置文件非常有用,例如来自某些域的电子邮件地址或特定格式的电话号码。 ⚠️ 重要提示: 正则表达式始终匹配从头到尾的完整值。
如何使用正则表达式
构建段时,可以使用两个正则表达式运算符:
- 匹配正则表达式 – 包括值与您的正则表达式匹配的配置文件
- 与正则表达式不匹配 – 包括值与正则表达式不匹配的配置文件
它可以在以下段条件下使用:
- 某人的属性(包括自定义对象)
- 过滤“某人已完成或未完成的操作”和“某人按特定顺序执行的步骤”
###
正则表达式基础
匹配字符
- 字母和数字 – 正常输入:hello 匹配“hello”
- 任何数字 – 使用 \d 匹配 0-9 的任何数字
- 任何字母 – 使用 [a-z] 表示小写字母,使用 [A-Z] 表示大写字母,或使用 [a-zA-Z] 表示两者
- 要么/或 – 使用 |匹配选项:gmail|yahoo 匹配“gmail”或“yahoo”
- 任何内容 – 使用 .\* 匹配任何字符
特殊字符
在这些之前添加反斜杠 \ 以字面匹配它们:
- 句点:\。匹配一个句点
- 加号:\+ 匹配加号
- 括号:\( 和 \) 匹配括号
重复模式
- {5} – 正好 5 次(例如,\d{5} 匹配 5 个数字)
- {2,4} – 2 到 4 次
- ? – 可选(0或1次)
注意:我们将重复模式限制为最多 1,000 次重复
###
常见示例
电子邮件地址
- 特定域:
- .\*@example\.com
- 匹配:john@example.com、support@example.com
- 多个域:
- .\*@(gmail|yahoo|hotmail)\.com
- 匹配:user@gmail.com、user@yahoo.com、user@hotmail.com
- 任何 .com 电子邮件:
- .\@.\\.com
电话号码
- 10 位美国号码
- \d{10}
- 比赛号码:5551234567
- 带括号的格式:
- \(\d{3}\) \d{3}-\d{4}
- 比赛:(555) 123-4567
邮政编码
- 5 位邮政编码:
- \d{5}
- 比赛:12345
- 邮政编码+4:
- \d{5}-\d{4}
- 比赛:12345-6789
对于高级参考:我们的实现使用 Google RE2 作为我们的标准。 在此处了解更多信息.
###
正则表达式限制
| 限制 | 价值 | 示例 | ||||||
| 正则表达式长度 | 最多 1,000 个字符 | – | ||||||
| 正则表达式行 | 最多 100 行 | – | ||||||
| 重复 | 最多重复 1,000 次 | \d{1000} 允许 \d{1001} 不允许 | ||||||
| 选项 ( | ) | 主层最多 5 个 | a | b | c | d | e | f 超出限制(6 个选项) |
| 嵌套深度 | 最多 5 级 | ((((a)))) 为 4 级,允许 |
此外,目前不支持以下功能。
| 功能 | 示例 |
| 前瞻/后瞻 | (?=…), (?!…), (?<=…), (?<!…) |
| 反向引用 | \1, \2, (\w+)\s+\1 |
| Unicode 转义 | \uXXXX,\u00A0 |
| 嵌套量词 | (a+)+, (x\)\, (a{2,5})+ |
###
成功秘诀
1.正则表达式匹配完整值
您的正则表达式必须描述整个值,而不仅仅是其中的一部分。错误:gmail\.com(仅匹配文本“gmail.com”)
右:.\*@gmail\.com(匹配完整的电子邮件,如 john@gmail.com)
2.总是逃避经期
匹配.com、.net等时,写成\.com,并加反斜杠。错误:@gmail.com(句点匹配任何字符)
右:@gmail\.com(与文字句点匹配)
***3.使用 .\ 表示“任何内容”****
匹配任何带有 .\* 的字符
- .\*@company\.com – company.com 上的任何电子邮件
- \+.\* – 以 + 开头的任何内容
- .\紧急。\ – 包含“紧急”的文本
4.从简单开始,然后完善
从基本的正则表达式开始,逐渐添加细节。 – 示例:.\*@gmail\.com → [a-z]+\.[a-z]+@gmail\.com
尽可能将复杂的逻辑拆分为多个简单的过滤器。 – “来自加利福尼亚州的 Gmail 或 Yahoo 电子邮件”示例:
- 过滤器 1:电子邮件与正则表达式匹配 .\*@(gmail|yahoo)\.com
- 过滤器 2:State 等于 California
5. 正则表达式默认区分大小写
如果您想让语句不区分大小写,可以添加“(?i)”作为前缀。 – 产品匹配 (?i)^iphone$
何时使用正则表达式与标准运算符
当您需要匹配特定格式或模式时,请使用正则表达式。对于更简单的需求,我们强烈建议使用标准运算符:
- 包含 – 文本出现在任何地方
- 开头为 – 匹配开头
- 结尾为 – 匹配结尾
- 等于 – 完全匹配