正则表达式生成

235 浏览
22 试用
5 购买
Aug 26, 2025更新

帮助生成正则表达式并提供示例代码及详细讲解

好的,下面我们来设计一个适用于“PCRE”的正则表达式,用于匹配有效的电子邮件地址,并捕获域名部分。


正则表达式

([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})

解释正则表达式的组成部分:

  1. ([a-zA-Z0-9._%+-]+)

    • 匹配邮箱地址的用户名部分(@之前的部分)。
    • [a-zA-Z0-9._%+-]:匹配允许出现在用户名中的字符,包括大小写字母(a-zA-Z)、数字(0-9)、点 (.)、下划线 (_)、百分号 (%)、加号 (+)、和减号 (-)。
    • +:匹配前面的字符集合一次或多次出现。
  2. @

    • 匹配邮箱地址中的 @ 分隔符。
  3. ([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})

    • 匹配邮箱地址的域名部分。
    • [a-zA-Z0-9.-]+:匹配域名的主机部分,可以由字母、数字、点 (.) 和短横线 (-) 组成,且必须一次或多次出现。
    • \.:匹配最后的点 (.)。
    • [a-zA-Z]{2,}:匹配顶级域名(如 com, org 等),由至少两个字母组成。
  4. 捕获组

    • 第一组 ([a-zA-Z0-9._%+-]+):捕获邮箱地址的用户名部分。
    • 第二组 ([a-zA-Z0-9.-]+\.[a-zA-Z]{2,}):捕获邮箱地址的域名部分。

示例文本

示例文本为:

请联系 support@example.com 获取更多信息。

Python 示例代码

下面展示如何在 Python 中使用该正则表达式来提取邮箱地址,并捕获域名部分。

import re

# 示例文本
text = "请联系 support@example.com 获取更多信息。"

# 定义正则表达式
regex = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# 搜索匹配
match = re.search(regex, text)

if match:
    # 提取完整邮箱地址和域名部分
    email = match.group(0)  # 整个邮箱地址
    domain = match.group(2)  # 域名部分
    print(f"完整邮箱地址: {email}")
    print(f"域名部分: {domain}")
else:
    print("没有找到邮箱地址。")

输出结果

运行上述代码会输出:

完整邮箱地址: support@example.com
域名部分: example.com

说明

  • re.search 方法会扫描文本中第一个匹配到的子串。
  • 使用 .group(0) 获取完整匹配结果。
  • 使用 .group(2) 提取 @ 之后的域名部分,可以根据需要做进一步处理。

此正则表达式既能够满足匹配电子邮件的基本规则,又简洁精炼,便于理解和应用。

正则表达式及详解

我们需要一个正则表达式来匹配“日期格式YYYY-MM-DD”。以下是正则表达式:

\b\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b

解释正则表达式

  • \b:表示单词边界,确保匹配的日期是一个独立的部分,而不是某些字符串的一部分(如“2023-10-01abc”不会匹配)。
  • \d{4}:匹配 4 个连续的数字,代表年。
  • -:匹配一个连接年份和月份的连字符。
  • (0[1-9]|1[0-2]):匹配月份,月份范围是 0112,使用两部分 OR 来表示:
    • 0[1-9]:表示 0109
    • 1[0-2]:表示 1012
  • -(0[1-9]|[12]\d|3[01]):匹配日期部分,范围是 0131,拆分为三段 OR 表达:
    • 0[1-9]:表示 0109
    • [12]\d:表示 1029
    • 3[01]:表示 3031
  • \b:再一次表示单词边界,确保匹配的文本是完整的日期格式。

示例代码

以下代码展示了如何在 JavaScript 中使用此正则表达式提取日期信息。

// 示例文本
const text = "该文件创建于2023-10-01,请在此日期后更新。";

// 定义正则表达式
const regex = /\b\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b/;

// 使用 .match 方法提取日期
const match = text.match(regex);

if (match) {
  console.log("提取到的日期:", match[0]); // 输出完整日期
} else {
  console.log("未找到匹配的日期格式");
}

执行结果解释

对于示例文本 "该文件创建于2023-10-01,请在此日期后更新。", 正则表达式会匹配到 "2023-10-01"

示例代码的执行结果将是:

提取到的日期: 2023-10-01

正则表达式生成和解释

正则表达式:

(\d{3})[- ]?(\d{3})[- ]?(\d{4})

解释:

  1. (\d{3}):

    • \d: 匹配数字(0-9)。
    • {3}: 精确匹配 3 个数字。
    • () 用于分组捕获,表示匹配的内容会被记忆下来,便于后续提取。
  2. [- ]?:

    • [- ]: 匹配 - 或者空格(匹配分隔符)。
    • ?: 表示匹配 0 或 1 次分隔符,这使得电话号码中间的分隔符可选。
  3. (\d{3}):

    • 同上,匹配 3 个数字并捕获到第二组。
  4. [- ]?:

    • 同上,匹配中间的分隔符。
  5. (\d{4}):

    • 同上,匹配 4 个数字,并捕获到第三组。

匹配范围:

  • 此正则表达式可以匹配以下格式的电话号码:
    • 123-456-7890
    • 123 456 7890
    • 1234567890

Python 示例代码

下面的 Python 代码使用上述正则表达式进行:

  1. 查找所有电话号码。
  2. 将格式统一为 (XXX) XXX-XXXX 格式输出。
import re

# 示例文本
text = "请拨打紧急联系人 123-456-7890 或者拨号 9876543210。"

# 正则表达式
pattern = r"(\d{3})[- ]?(\d{3})[- ]?(\d{4})"

# 查找所有电话号码并格式化
def format_phone_numbers(input_text):
    results = re.findall(pattern, input_text)  # 捕获所有符合格式的电话号码
    formatted_numbers = []

    for match in results:
        # 每个 match 是一个三元组,像 ('123', '456', '7890')
        formatted_numbers.append(f"({match[0]}) {match[1]}-{match[2]}")

    return formatted_numbers

# 调用函数并打印结果
formatted_numbers = format_phone_numbers(text)
print("匹配的电话号码:", formatted_numbers)  # 输出格式化结果

代码输出与说明

输出结果:

匹配的电话号码: ['(123) 456-7890', '(987) 654-3210']

运行说明:

  • 输入: 示例文本中包含 123-456-78909876543210
  • 处理:
    • 通过 re.findall 方法捕获电话的三个部分(区号、前三位、后四位)。
    • 将分隔符统一通过 f"({group1}) {group2}-{group3}" 格式化为标准格式 (XXX) XXX-XXXX
  • 输出: 将所有电话号码格式化后输出为 Python 列表。

以上代码实现了电话号码的匹配与格式化,适用于多种分隔符的电话号码形式。

示例详情

解决的问题

帮助用户快速生成适用于特定场景的正则表达式,同时提供详细的讲解以便于理解,并结合示例代码展示其实用性,适用于广泛的技术开发与数据处理场景。

适用用户

开发者和程序员

快速生成适配特定开发环境的正则表达式,并且直接获取示例代码,免去反复调试的时间。

数据分析师

通过正则表达式对文本数据进行高效清洗、提取与格式化,提高数据处理效率。

非技术行业用户

无需掌握复杂的正则语法,也可以通过直观的提示生成符合需求的正则表达式。

特征总结

轻松生成精准正则表达式,快速解决文本匹配与提取问题,适应多种场景需求。
提供示例代码与详细讲解,让用户即使没有正则经验也能快速上手和理解。
支持多种语言与平台的代码展示,帮助开发者直接借用生成的代码。
针对不同使用场景定制正则表达式,确保满足特定业务需求。
自动分析示例文本,智能优化表达式,减少用户自行调试时间。
清晰解释正则表达式的每一部分,让用户不仅会用,更能学会。
覆盖多种正则风格(如Python、JavaScript等),适配用户常见开发环境。
提供场景化应用指导,结合具体任务展示正则如何解决实际问题。
参数化提示词输入,用户只需简单描述需求即可生成符合需求的表达式。
内置最佳实践与优化建议,提高正则表达式的可读性与执行效率。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥15.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 135 tokens
- 6 个可调节参数
{ 正则类型 } { 匹配模式描述 } { 示例文本 } { 可选说明 } { 编程语言 } { 具体任务 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
限时免费

不要错过!

免费获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59