不喜欢广告? 无广告 今天

正则表达式测试器、速查表和转换器 — 停止猜测,开始匹配

发布日期

正则表达式功能强大但难以调试。有三个免费工具使其变得易于使用:一个带有匹配高亮的在线测试工具、一个用于语法查找的速查表,以及一个用于在不同正则表达式变体之间转换的转换工具。

正则表达及式测试器、速查表和转换器 – 停止猜测,开始匹配 1
广告 移除?

软件开发中有一个长期存在的玩笑:一旦你编写了一个正则表达式,你就创建了两个问题。这个模式有时是有效的,但六个月后理解它需要博士学位和祈祷。正则表达式赢得了它神秘的声誉,但它同样不可或缺。电子邮件验证、日志解析、URL提取——你不会用循环来替代它,你只是学会更好地使用它。

有三件工具可以把正则表达式从令人恐惧的来源转变为真正的生产力工具:一个 实时测试器快捷参考表,以及一个 语法转换器。每个工具如何发挥作用如下。

正则表达式为何仍然重要(以及为何它令人痛苦)

模式匹配是后端开发人员、质量保证工程师和数据工程师的核心技能。一个精心设计的正则表达式可以替代数十行字符串解析代码。问题不在于概念本身,而在于语法。量词、前瞻、捕获组和字符类各自都有其特殊之处。再加上跨语言差异(JavaScript 正则表达式和 Python 正则表达式是表兄弟,而非双胞胎),调试就变成了一场猜谜游戏。

大多数开发人员遵循的工作流程是:编写一个模式,将其粘贴到脚本中,运行脚本,挠头,重复。其实有一种更快的方法。

工具1——正则表达式测试器:边输入边查看匹配结果

在线正则表达式测试器 能够实时高亮匹配内容。无需运行脚本,无需打开浏览器控制台——只需输入你的模式,就能看到随着引擎处理输入,匹配内容实时点亮。

以下以电子邮件验证为例进行演示:

  • 模式: [a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}
  • 测试字符串: Contact us at hello@example.com or support@iotools.cloud for help.

将模式粘贴到正则表达式测试器中,添加测试字符串,两个电子邮件地址会立即高亮显示。修改 {2,}{2,4} 并观察更长的顶级域名(TLD)如 .studio 会实时从匹配集合中移除——无需重新加载,无需猜测。

捕获组同样即时生效。在本地部分周围添加括号——([a-zA-Z0-9._%+\-]+)@——并在匹配面板中出现“组1”,仅显示用户名部分。这使得构建提取逻辑变得轻松得多,因为你可以在提交代码前清楚地看到每个组捕获了什么内容。

测试器还会以切换形式显示标志(不区分大小写 i,全局 g,多行 m),因此你可以测试每个标志的效果,而无需重新编写模式。

工具2——正则表达式快捷参考表:无需切换标签页即可查找语法

即使是经验丰富的开发者也会忘记  是单词边界还是退格符。正则表达式快捷参考表按类别组织,让你几秒钟内就能回到工作状态: 锚点: (开始),

  • (结束), ^ (单词边界), $ (非单词边界)  量词: \B (0 或 1),
  • (范围), * (0+), + (1+), ? 量词后的懒匹配 {n,m} 及其否定形式 ? 组:
  • 字符类: [abc], [^abc], \d, \w, \s 捕获组,
  • 非捕获组, (...) 命名组 (?:...) 前瞻/后瞻: (?P<name>...) 每个条目都显示了符号、通俗描述和示例。它是你第一天就知道需要它时会书签保存的参考资料——现在你有了。
  • 工具3——正则表达式转换器:无需头疼地实现跨语言转换 (?=...), (?!...), (?<=...), (?<!...)

每个开发者最终都会陷入一个陷阱:你在Python中编写正则表达式,它运行完美,然后你将其粘贴到JavaScript中,它却静默失败。或者更糟——它匹配的内容不同。

正则表达式转换器

可在PCRE、JavaScript、Python等不同语法之间转换正则表达式模式。命名捕获组是语法差异的一个典型例子:

Python(PCRE风格): 两者都能匹配像

  • 这样的日期,但引用捕获组的方式不同:Python使用 (?P<year>\d{4})-(?P<month>\d{2})
  • JavaScript: (?<year>\d{4})-(?<month>\d{2})

,JavaScript使用 2024-03。转换器处理了语法转换,因此你无需在文档中翻找,以弄明白为什么你的模式在切换栈时失效。 match.group('year')转换器还平滑处理了其他差异:贪婪量词(仅PCRE支持)、原子组、Unicode属性转义,以及 match.groups.year在Unicode模式下的行为。

三个实用的正则表达式示例,现在就可以尝试: \d 电子邮件验证

匹配标准电子邮件地址。并非完整的RFC 5322(该正则表达式可达数千字符),但足以覆盖输入验证中的99%情况。

URL提取 正则表达式测试器 从原始文本中提取HTTP和HTTPS URL。适用于从非结构化内容或日志文件中抓取链接目标。

Apache访问日志解析

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

从标准Apache访问日志行中提取IP地址、时间戳、HTTP方法、路径、状态码和响应大小。测试它使用以下内容:

正则表达式测试器、快捷参考表和转换器——停止猜测,开始匹配 2

https?://[^\s/$.?#].[^\s]*

正则表达式测试器、快捷参考表和转换器——停止猜测,开始匹配 1

Apache 访问日志解析

^(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) (\S+) \S+" (\d{3}) (\d+)

从标准的 Apache 访问日志行中提取 IP 地址、时间戳、HTTP 方法、路径、状态码和响应大小。在以下内容中进行测试: 192.168.1.1 - - [01/May/2024:12:00:00 +0000] "GET /index.html HTTP/1.1" 200 1234

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?