钥匙要点
- 正则表达式(REGEX)是开发人员的宝贵工具,用于诸如日志分析,形式提交验证并查找和替换操作之类的任务。了解如何有效构建和使用正则表达式可以大大提高生产率和效率。 构建良好的正则是定义场景,制定计划以及实施/测试/重构。重要的是要了解允许的字符类型,角色必须出现多少次以及要遵循的任何约束。 REGEX用法的实际示例
- 包括匹配密码,URL,特定的HTML标签和重复的单词。这些示例证明了字符范围,断言,条件,群体等的使用。 >
- > REGEX是一种强大的工具,但它也可能很复杂且难以管理。因此,有时使用几个较小的正直而不是一个大的正则是更有效的。注意小组捕获也可能使匹配对于进一步的处理更有用。 >
- 正则表达式通常用于执行搜索,替换子字符串和验证字符串数据。本文提供了通过复杂的正则表达式进行的提示,技巧,资源和步骤。 如果您没有基本技能,则可以通过我们的初学者指南学习正则表达式。作为正则表达式的奥术,您不会花很长时间学习这些概念。 有许多书籍,文章,网站来解释正则表达式,因此,我不想写另一个说明,而是要直接进行更实用的例子:
- 匹配url
- 匹配特定的HTML标签
- 匹配重复的单词
- 您可以在此链接上找到有用的备忘单。除了大量有用的资源外,Lea Verou在这篇文章的底部还有一个会议视频 - 它有点长,但在打破正则表达式方面非常出色。 如何构建良好的正则
1。定义方案
使用自然语言来定义问题,将使您更好地了解使用方法。这些单词可以和必须在定义中使用,可用于描述强制性约束或断言。 以下是一个示例:字符串必须以“ H”开头,并以“ O”结束(例如,Hello,Halo)。
- 字符串可以包裹在括号中。
- 2。制定计划
允许的字符类型(字,数字,新行,范围,…)?
字符类是否正确定义了特定域?
>- 我应该编写更多测试字符串以涵盖更多用例吗?
- 是否可以找到和隔离一些问题并分别测试它们?
- >我应该用子图案,组,条件等重构表达式,以使其更小,更清晰,更灵活? >
- 实例
- 以下示例的目的不是写一个只能解决问题的表达式,而是使用特定用例,使用字符范围,断言,条件,群体等的重要元素编写最有效的表达式。 匹配密码
设想:
长度6至12个字符

- >必须至少有一个下部案例字母
- 必须至少有一个数字 >
- 应包含其他字符 >
- 图案: ^(?=。*[a-z])(?=。*[a-z])(?=。*d)。{6,12} $ 此表达式基于多个正lookahead(?=(REGEX))。 LookAhead匹配了一些声明(Regex)的东西。条件的顺序不会影响结果。当有几种条件时,外观表达式非常有用。 我们还可以使用负LookAhead(?!(REGEX))排除某些角色范围。例如,我可以将%排除(?!。*#)。 让我们解释以上表达的每种模式:
- ^在字符串开始时断言位置
- 。*匹配零和无限时间之间的任何字符(新线)
- [A-Z]匹配A和z之间的范围内的一个字符
- (?=。*[a-z])正lookahead,断言正则是。*[a-z]可以匹配:
- 。*匹配零和无限时间之间的任何字符(新线)
[A-Z]匹配A和Z之间的单个字符(情况敏感) - >
- (?=。 *d)积极的lookahead,断言正则 *dcan是匹配的:
- 。*匹配零和无限时间之间的任何字符(新线)
d匹配数字[0-9] -
- 。{6,12}匹配6至12次
之间的任何字符(Newline除外)
- $断言字符串末尾的位置
匹配的URL

- 必须从http或https或ftp开始,然后是:// >
- 必须匹配有效的域名
- 可以包含端口规范(http://www.sitepoint.com:80)
- 可以包含数字,字母,点,连字符,前向斜线,多次
- ^在字符串开始时断言位置
- 捕获组(http | https | ftp),捕获http或https或ftp
- :逃脱的角色,匹配角色:字面意思
- [ /] {2}恰好匹配逃脱的字符 / 的2倍
- 捕获组([A-ZA-Z0-9-。]。[A-ZA-Z] {2,4}):
- [A-ZA-Z0-9-。]匹配A和z,a和z,z,0和9之间的一个和无限的时间字符,字面字符和字符。从字面上看 。匹配角色。从字面上看
- [a-za-z] {2,4}匹配A和Z或A和Z之间的2至4倍(CASE敏感)
>
捕获组(:[0-9])?
-
- 量词?匹配零次或更多次之间的组
- :匹配字符:字面上
- [0-9]匹配0和9次或多次之间的单个字符
- >捕获组([a-za-z0-9 -._??,'/\&%$#=〜]*)*):
- [a-za-z0-9 -._??,'/\&%$#=〜]*匹配零和无限时间在a-z,a-z,a-z,0-9的单个字符之间: - ._?,'/&%$#=〜。
开始标签必须以

- 结束标签必须以一个或多个字符开始,然后以>
- 结尾。 我们必须匹配标签元素中的内容
- 图案: (。*?)1> 匹配起始标签和内部内容,它非常简单地使用和(。*?),但是在上面的模式中,我添加了一个有用的内容:对捕获组的引用。 每个由括号()定义的捕获组都可以使用其位置号,(第一个)(第二)(第三),这将允许进一步操作。 以上表达可以解释为:
- 以开始
- 之后是一个或多个炭 >
- 捕获标签内的内容
- 名称必须在> 之前捕获名称
- 表达式中只有两个捕获组,标签名称和内容将返回一个非常清晰的匹配,即带有相关内容的标签名称列表。 让我们更深入地解释副本:
- 。*匹配零或更多次之间的任何字符(Newline除外)
- >匹配字符>字面上的
- 捕获组(。 /匹配字符 /字面
- 1匹配与第一个捕获组相匹配的相同文本:([w])
- >匹配字符>字面上
- 匹配重复的单词
- 设想:
- 单词是空间分开的
我们必须匹配每个重复 - 非连续性
图案: b(w)b(?=。*1) 这种正则表达似乎具有挑战性,但使用了先前显示的一些概念。 该模式引入了单词边界的概念。 单词边界B主要检查位置。当单词字符(即abcde)之后是非单词字符(即: - 〜,!)时,它与之匹配。 在下面,您可以找到单词边界的一些示例用途,以使其更清晰: - 鉴于短语正则表达式很棒 - 模式的准匹配是 - 模式w {3} b可以与单词的最后三个字母匹配:lar,ion,是,ome 以上表达可以解释为:- 匹配每个单词字符,后跟一个非字角色(在我们的情况空间中) 检查是否已经存在匹配的单词
- 在下面,您将找到每个子模式的解释:
- b字边界
- 捕获组([w])匹配任何字字符a-za-z0-9_
- > b字边界
- (?=。*1)正lookahead断言以下内容可以匹配:
-
- 。
- 1匹配与首先捕获组相同的文本
最终想法
有用的资源
在下面,您可以找到更多信息和资源,以帮助您的正则技能发展。 如果您发现未列出的有用的内容,请随时在文章中添加评论。lea verou - /reg(exp){2}LAIND/:神秘面纱的正则表达式
https://www.youtube.com/watch?v=eklues9rvak
> PHP库
>名称
描述
Regexpbuilder
使用人类可读的方法创建正则
Noonoofluentregex
使用流利的设定器和以上类似的英语术语来构建正则表达式
Hoaregex
提供分析正则和生成字符串的工具
正则反向
给定正则表达式将生成一个字符串
>网站
url
描述
Regex101.com
PCRE在线正则测试仪
regextester.com
PCRE在线正则测试仪
rexv.org
PCRE在线正则测试仪
debuggex.com
支持PCRE,并提供非常有用的视觉正则辩论式调试器
Regexper.com
JavaScript样式的正则表达式,但可用于调试
phpliveregex.com
Preg功能的在线测试仪
regxlib.com
准备使用的正则表达式数据库
常规表达
正则教程,书籍评论,示例
书籍
>标题
描述
作者
>编辑
掌握正则表达式
必须有正则书
杰弗里·弗里德尔(Jeffrey Friedl)
O’Reilly
正则表达式袖珍参考
Perl,Ruby,Php,Python,C,Java和.net的正则表达式
托尼·乔布恩
O’Reilly
经常询问的问题(常见问题解答)有关正则表达式(REGEX)
>正则表达式(REGEX)的哪些实际应用?它们通常在数据验证中使用,以确保用户输入匹配特定格式,例如电子邮件地址或电话号码。它们也可以用于网络刮擦中,以从网页中提取特定的信息。此外,REGEX可以用于文本处理中的任务,例如查找和替换特定的文本字符串,将字符串分配到一个子字符串中等等。 ?
创建复杂的正则表达式涉及理解和组合各种正则表达式组件。这些包括文字,角色类别,量词和化角。通过以不同的方式组合这些组件,您可以创建符合各种图案的正则表达式。例如,您可以创建一个与电子邮件地址,电话号码或URL匹配的正则表达式。
>使用正则表达式时,有什么常见错误需要避免哪些错误? *),这可能导致意外的结果。另一个常见的错误是当要从字面上解释特殊角色时,没有正确地逃脱特殊字符。此外,重要的是要记住,默认情况下,正则表达式对大小写敏感,因此,如果您想忽略案例,则需要使用适当的标志。
>>我如何测试我的正则表达式(REGEX)? >
>有几种可用的在线工具可让您测试正则表达式。这些工具通常允许您输入正则表达式和测试字符串,然后突出显示与正则表达式匹配的测试字符串的各个部分。这可能是调试正则表达式并确保它们按预期工作的好方法。可以在所有编程语言中使用正则表达式(REGEX)吗?表达某种形式。但是,在语言之间,所支持的特定语法和功能可能会有所不同。例如,JavaScript,Python和Ruby都支持正则表达式,但它们每个都有自己的独特语法和功能。>
>使用正则表达式(REGEX)有什么含义?虽然正则表达式可能非常强大,但如果不正确使用,它们也可能是资源密集的。复杂的正则表达式可能需要很长时间才能执行,尤其是在大量文本上。因此,必须明智地使用正则表达式并尽可能地优化它们。>如何优化我的正则表达式(REGEX)?>有几种优化正则表达式的策略。其中包括避免使用不必要的量化符,当您不需要匹配的文本时使用非捕捉组,以及在可能的情况下使用字符类而不是交替。此外,某些正则表达引擎提供了优化功能,例如懒量化量,可以提高性能。
>有哪些资源可以更多地了解正则表达式(REGEX)?可用于了解有关正则表达式的更多信息。其中包括在线教程,书籍和互动学习平台。此外,许多编程语言都有有关其正则表达语法和功能的大量文档。
>可以使用正则表达式(REGEX)来解析HTML或XML?
>>在技术上可以使用正则表达式时要解析HTML或XML,通常不建议使用。这是因为HTML和XML具有嵌套的结构,该结构可能难以准确地捕获,以正则表达式。相反,通常最好使用专用的HTML或XML解析器。
>正则表达式(REGEX)有哪些替代方法?根据手头的任务,您最好使用其他方法。例如,对于简单的字符串操纵任务,您可以使用内置的字符串方法而不是正则表达式。对于解析HTML或XML,通常会使用专用解析器。对于复杂的文本处理任务,您可能需要考虑使用自然语言处理库。>
以上是用实际的例子揭开正面的神秘面纱的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

PHP在过去几十年中塑造了网络,并将继续在Web开发中扮演重要角色。1)PHP起源于1994年,因其易用性和与MySQL的无缝集成成为开发者首选。2)其核心功能包括生成动态内容和与数据库的集成,使得网站能够实时更新和个性化展示。3)PHP的广泛应用和生态系统推动了其长期影响,但也面临版本更新和安全性挑战。4)近年来的性能改进,如PHP7的发布,使其能与现代语言竞争。5)未来,PHP需应对容器化、微服务等新挑战,但其灵活性和活跃社区使其具备适应能力。

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP没有死。1)PHP社区积极解决性能和安全问题,PHP7.x提升了性能。2)PHP适合现代Web开发,广泛用于大型网站。3)PHP易学且服务器表现出色,但类型系统不如静态语言严格。4)PHP在内容管理和电商领域仍重要,生态系统不断进化。5)通过OPcache和APC等优化性能,使用OOP和设计模式提升代码质量。

PHP和Python各有优劣,选择取决于项目需求。1)PHP适合Web开发,易学,社区资源丰富,但语法不够现代,性能和安全性需注意。2)Python适用于数据科学和机器学习,语法简洁,易学,但执行速度和内存管理有瓶颈。

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具