# 过滤器和替换规则中的正则表达式

Language: zh-cn
Canonical: <https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi>
Published: 2026-11-07T08:21:00+00:00
Modified: 2026-11-07T08:21:00+00:00

正则表达式用于描述要查找什么样的文本。您指定的是一个模式，而不是某个完全固定的短语：例如“咨询请求”以及它后面的任意编号。每条消息的编号可以不同，模式仍能找到所需片段。

这样可以搜索日期、链接、单个词、整行文本，以及几乎所有能用规则描述的文本组合。几个简单的符号，就能匹配变化的值、从多个选项中选择，并跳过不需要的内容。这种搜索的能力远超普通的按词搜索。

![通过模式查找匹配的文本片段](<https://flowin.click/wp-content/uploads/2026/10/cf-da8cc01b43e113428f944f35.webp>)

文章目录

- [正则表达式的功能](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#headline-6-324>)
- [如何读懂正则表达式](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#reading-pattern>)
- [正则表达式语法](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#headline-11-324>)
- [FLOWIN 中的搜索设置](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#flowin-flags>)
- [现成模板](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#headline-45-640>)
- [常见问题](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#faq>)

## 正则表达式的功能

FLOWIN 的过滤器和替换规则支持正则表达式，可用于：

- 在消息开头或结尾添加任意文本。
- 过滤带链接的消息。
- 从复制的消息中删除链接、电话号码、电子邮箱和其他联系信息。
- 过滤长消息，或反过来，只过滤短消息。

“Regexp”模式

在过滤器或替换规则设置中，“搜索”字段旁的“Regexp”模式可启用正则表达式搜索。模式本身填写在此字段中。如何创建规则并将其应用到转发任务，详见[过滤器](<https://flowin.click/zh-cn/articles/zhuanfa-xiaoxi-guolv>)和[替换规则](<https://flowin.click/zh-cn/articles/zhuanfa-xiaoxi-zhong-de-neirong-tihuan>)使用说明。

[![替换规则设置中“搜索”字段旁的 Regexp 模式](<https://flowin.click/wp-content/uploads/2026/11/cf-c8dc8b164b443992f71d6427.webp>)](<https://flowin.click/wp-content/uploads/2026/11/cf-c8dc8b164b443992f71d6427.webp>)

替换规则设置中的“Regexp”。

## 如何读懂正则表达式

先来看模式` 咨询请求 №\d+ `。它既能找到` 咨询请求 №125 `，也能找到` 咨询请求 №8072 `，尽管编号不同。让我们从左往右读：

- ` 咨询请求 № ` 查找的正是这些文字、空格和编号符号。
- ` \d ` 表示 0 到 9 中的任意一个数字。
- ` + ` 要求连续出现一个或多个这样的数字。

找到的片段称为匹配结果。在消息` 咨询请求 №125 已受理 `中，匹配结果是` 咨询请求 №125 `，而` 已受理 `一词不包含在内。在过滤器中，匹配结果有助于判断消息是否符合条件；在替换规则中，它指出要修改哪个片段。

模式中的普通文字和空格会按原样搜索。特殊符号则用于设定规则。下面先介绍基本符号，然后列出适用于不同任务的现成示例。

## 正则表达式语法

要开始使用正则表达式，需要了解其语法，也就是理解特定符号的含义。

### 基本符号

- ` ^ ` 表示文本开头。
- ` $ ` 表示文本结尾。
- ` . ` 匹配任意字符，包括换行符。
- ` \d ` 匹配 0 到 9 中的一个数字。
- ` \w ` 匹配一个拉丁字母、数字或下划线。
- ` \n ` 表示换行。
- ` \t ` 表示制表符。
- ` \s ` 匹配普通空格、制表符、换行符、回车符或换页符。
- ` \b ` 检查单词边界，例如字母和空格之间的位置。它本身不会向匹配结果中添加字符。

### 量词

量词指定它前面的字符或组重复多少次。组用圆括号将多个字符组合起来。

- ` * ` 表示零次或多次。
- ` + ` 表示一次或多次。
- ` ? ` 表示零次或一次。
- ` {5} ` 表示恰好 5 次。
- ` {1,5} ` 表示 1 至 5 次。
- ` {1,} ` 表示一次或多次。
- ` {0,5} ` 表示 0 至 5 次。

例如：

- ` a+ ` 可以匹配 ` a `、 ` aa `、 ` aaa ` 等。
- ` .* ` 可以匹配任意文本，甚至是空文本。
- ` аб{3} ` 可以匹配 ` аббб `。

### 组

圆括号 ` ( ) ` 可将字符组合成组。组最常与[量词](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#quantifiers>)或竖线 ` | ` 搭配使用，竖线表示逻辑“或”。

例如：

- ` ((Bob)|(Alice)) ` 既可以匹配 ` Bob `，也可以匹配 ` Alice `。
- ` (abc){3} ` 可以匹配 ` abcabcabc `。

### 字符集合

字符集合使用方括号 ` [ ] ` 表示。可以像下面这样在其中列出字符：

- ` [а-яё] ` 匹配任意一个俄文字母。
- ` [абвгд] ` 或 ` [а-д] ` 匹配 ` а `、 ` б `、 ` в `、 ` г ` 或 ` д `中的任意一个字母。
- ` [a-z] ` 匹配从 ` a ` 到 ` z ` 的任意一个拉丁字母。
- ` [0-5] ` 匹配 0 到 5 中的任意一个数字。

符号 ` ^ ` 在集合开头表示逻辑“非”：

- ` [^а-яё] ` 匹配除俄文字母以外的任意字符。
- ` [^a-z] ` 匹配除 ` a ` 到 ` z ` 范围内的拉丁字母以外的任意字符。
- ` [^\s] ` 匹配不属于 ` \s ` 的任意字符。

在 FLOWIN 中， ` \w ` 不包含西里尔字母。 ` [а-яё] ` 涵盖俄文字母表，包括 ` ё `。而 ` [а-я] ` 范围不包含这个字母。

### 字符转义

如果要将功能性符号作为普通文本使用，而不是作为语法的一部分，就需要在它前面加反斜杠 ` \ `。这称为转义。

例如：

- ` :\) ` 可以匹配 ` :) `。这里的括号表示普通括号，而不是组。
- ` 谁\? ` 可以匹配` 谁? `。这里的问号不表示重复次数。

## FLOWIN 中的搜索设置

标志会改变搜索的通用规则，例如是否区分大小写。FLOWIN 已启用部分设置，因此同一个模式的行为，可能与使用默认设置的第三方测试工具不同。

标志已配置好

过滤器和替换规则已启用 ` IgnoreCase (i) `、 ` Singleline (s) `、 ` RE2 ` 和 ` Unicode `。无需手动为每个模式添加这些标志。实际使用时，需要注意以下几点：

- ` i ` 使搜索不区分大小写： ` кот ` 既能找到 ` Кот `，也能找到 ` КОТ `。
- ` s ` 允许点号 ` . ` 匹配换行。因此， ` .* ` 可能一次匹配多行。
- 多行模式 ` Multiline (m) ` 默认关闭： ` ^ ` 和 ` $ ` 表示整条消息的开头和结尾，而非每一行的开头和结尾。
- ` RE2 ` 决定了语法的特性： ` \d ` 查找数字 0–9，而 ` \w ` 只查找拉丁字母、数字和下划线。启用 ` Unicode ` 也不会使 ` \w ` 包含西里尔字母。

使用下面的现成示例不需要切换任何设置。如果在其他服务中测试，请考虑这些设置：即使标志名称相同，也不能保证不同引擎的行为一致。

## 现成模板

选择任务，将模式复制到已选择“Regexp”模式的“搜索”字段中。示例显示的是实际找到的文本。之后消息会发生什么，取决于设置的过滤器或替换规则。

### 每次都不同的咨询请求编号

在事先不知道编号的情况下查找咨询请求。

模式：  
` 咨询请求 №\d+ `

文本：` 咨询请求 №125 已受理。咨询请求 №8072 等待回复。 `

找到：` 咨询请求 №125 `、` 咨询请求 №8072 `。

“咨询请求 №”这部分文本保持不变， ` \d+ ` 会查找连续的一个或多个数字。№ 前的空格也属于模式的一部分。“咨询请求 №ABC”不会匹配。

### 仅包含六位数字的消息

筛选恰好包含一个六位数代码的消息。

模式：  
` ^\d{6}$ `

文本： ` 482901 `

找到： ` 482901 `。

开头和结尾将范围限定为整条消息，而 ` {6} ` 规定了六位数字。“代码: 482901”“48290”以及末尾带空格的“482901 ”都不会匹配。

### 多个文本选项之一

查找提及两个状态之一的消息。

模式：  
` 完成|取消 `

文本：` 完成：文件已发送。另一项任务已取消。 `

找到：` 完成 `、` 取消 `。

竖线表示“或”。字母大小写不影响匹配。没有单词边界时，模式也会在“已完成的”内部找到“完成”。

### 完整单词，不匹配其他词内部的文本

查找“кот”一词，跳过“котёнок”和“скот”。

模式：  
` \bкот\b `

文本： ` Кот, котёнок и скот. `

找到： ` Кот `。

` \b ` 检查单词两侧的边界。空格和标点可以将单词与相邻文本分隔开；它们本身不属于匹配结果。

### 日.月.年格式的日期

查找日和月各用两位数字、年用四位数字表示的日期。

模式：  
` \d{2}\.\d{2}\.\d{4} `

文本：` 会议 16.10.2026，12:00。 `

找到： ` 16.10.2026 `。

` \. ` 表示普通点号，而不是任意字符。模式检查的是书写形式，而非日历日期：“99.99.2026”也会匹配。

### 俄语和英语话题标签

查找由字母、数字和下划线组成的话题标签。

模式：  
` #[а-яёa-z0-9_]+ `

文本： ` #Новости #release_2 #всё_готово `

找到： ` #Новости `、 ` #release_2 `、 ` #всё_готово `。

\# 后面是集合中的一个或多个字符。空格或连字符会结束匹配：在“\#план-дня”中，只会找到“\#план”。

### @username 形式的提及

查找类似用户或频道提及的文本。

模式：  
` @[a-z0-9_]{3,} `

文本：` 作者: @news_room。另一个: @ab。 `

找到： ` @news_room `。

@ 后面至少需要三个拉丁字母、数字或下划线。模式查找的是书写形式，并不验证用户是否存在。它也可能匹配到电子邮件地址的一部分。

### 以 http:// 或 https:// 开头的链接

查找明确写出协议的网址。

模式：  
` https?:\/\/[^\s]+ `

文本：` 打开 https://example.org/page 和 http://example.org `

找到： ` https://example.org/page `、 ` http://example.org `。

字母 s 可以省略。在 // 后，模式会一直获取字符，直到遇到最近的空格或 ` \s ` 中的其他分隔符。不带协议的地址不会匹配，紧贴地址的逗号或句号则可能被包含在匹配结果中。

### +7 后接十位数字的电话号码

查找连续书写、不含括号、空格和连字符的电话号码。

模式：  
` \+7\d{10} `

文本：` 联系号码: +79991234567 `

找到： ` +79991234567 `。

` \+ ` 查找普通加号，而 ` \d{10} ` 规定 7 后面恰好跟十位数字。“+7 (999) 123-45-67”这种形式不会匹配。这是按书写形式搜索，并不验证号码是否存在；在更长的数字串内部也可能产生匹配。

### 以指定标记开头的消息

只在消息最开头查找“重要:”标记。

模式：  
` ^重要: `

文本：` 重要: 会议已改期。 `

找到：` 重要: `。

^ 检查整段文本的开头。“更新: 重要: 会议已改期”中不会有匹配结果。第二行开头的标记也不会匹配，因为多行模式默认关闭。

### 词与词之间多余的空格

查找连续的两个或更多普通空格，以便随后将它们替换为一个空格。

模式：  
` [ ]{2,} `

在文本` 带有··多余···空格的文本 `中会找到两组空格：两个空格和三个空格。这里的 ` · ` 符号只用于表示普通空格，不需要输入。

方括号内是一个普通空格，而 ` {2,} ` 要求至少连续出现两个。要去掉多余空格，可将找到的片段替换为一个空格。此模式不会影响换行。

### 不超过一百个字符的短消息

筛选长度为 1 至 100 个字符的非空消息。

模式：  
` ^.{1,100}$ `

文本：` 简短消息 `

找到：` 简短消息 `。

点号会计入任意字符，包括空格和换行。括号设定数量范围，而 ^ 和 $ 要求检查整条消息。空消息和超过 100 个字符的文本都不会匹配。一个组合表情符号可能被计为多个字符。

此列表会不断补充。如有新模板的建议，可以发送给客服 [@value\_maker](<https://t.me/value_maker>)。

测试自己的模式

在 [regex101.com](<https://regex101.com/>) 上可以方便地测试自己的正则表达式。该网站的搜索设置可能与 FLOWIN 不同，因此在应用到正式转发任务前，需要先用测试消息验证：既测试应当匹配的消息，也测试不应当匹配的消息。

## 常见问题

 

**什么时候“文本”或“列表”就够了，什么时候需要“Regexp”？**

“文本”模式适用于一个已知短语，“列表”则可以列出多个选项。当文本按某种规则变化时，就需要“Regexp”：例如“咨询请求”后每次都有一个新的编号。它还有助于设定单词边界或字符数量。对找到的消息执行什么操作，需要在[过滤器](<https://flowin.click/zh-cn/articles/zhuanfa-xiaoxi-guolv>)或[替换规则](<https://flowin.click/zh-cn/articles/zhuanfa-xiaoxi-zhong-de-neirong-tihuan>)中单独设置。

 

**为什么在线测试工具中的表达式在 FLOWIN 中表现不同？**

结果取决于引擎和搜索设置。FLOWIN 的过滤器和替换规则已启用 IgnoreCase、Singleline、RE2 和 Unicode，而 Multiline 默认关闭。因此，搜索不区分大小写，点号可以匹配换行，而 ` ^ ` 和 ` $ ` 表示整条消息的边界。请核对[搜索设置](<https://flowin.click/zh-cn/articles/guolvqi-he-tihuan-guize-zhong-de-zhengze-biaodashi#flowin-flags>)，并在 FLOWIN 中用应当匹配和不应当匹配的消息测试表达式。

 

**为什么 .\* 会匹配多行？**

FLOWIN 启用了 Singleline：点号也可以匹配换行。因此， ` .* ` 不一定会停在第一行末尾。如果要查找下一个换行符之前的文本，可以使用 ` [^\r\n]+ `：该模式查找除回车和换行以外的一个或多个字符。

 

**为什么 \\w 找不到俄文字母？**

在 FLOWIN 的搜索设置中， ` \w ` 涵盖拉丁字母、数字和下划线。要匹配俄文字母，请使用 ` [а-яё] `；要匹配这些字母组成的序列，请使用 ` [а-яё]+ `。字母 ` ё ` 需要单独列出： ` а-я ` 范围不包含它。由于搜索已经不区分大小写，无需区分大写和小写字母。

 

**如何查找完整单词，而不匹配其他词内部的文本？**

在单词两侧添加 ` \b `。例如， ` \bкот\b ` 会在“Кот, котёнок и скот”中找到“Кот”，但跳过另外两个词。边界检查的是单词的位置，空格和标点不会被包含在找到的片段中。

 

**示例中的日期模式会检查该日期是否存在吗？**

不会。表达式 ` \d{2}\.\d{2}\.\d{4} ` 只检查书写形式：两位数字、点号、两位数字、点号和四位数字。因此，它既能找到 ` 16.10.2026 `，也能找到 ` 99.99.2026 `。此示例适用于查找类似日期的片段，但不能确认日和月是否有效。

 

**如果正则表达式什么也找不到，需要检查什么？**

首先确认“搜索”字段旁已选择“Regexp”。然后将模式与原始文本进行比较：空格、换行和普通符号也会影响匹配。例如，` 咨询请求 №\d+ ` 要求 № 前有空格，后面有数字，因此不会找到` 咨询请求№125 ` 或` 咨询请求 №ABC `。还要检查边界 ` ^ ` 和 ` $ `：默认情况下，它们表示整条消息的边界。先从简单的片段开始，逐个添加条件，每次都检查结果。
