搜索
首页后端开发php教程用实际的例子揭开正面的神秘面纱

用实际的例子揭开正面的神秘面纱

钥匙要点

  • 正则表达式(REGEX)是开发人员的宝贵工具,用于诸如日志分析,形式提交验证并查找和替换操作之类的任务。了解如何有效构建和使用正则表达式可以大大提高生产率和效率。
  • 构建良好的正则是定义场景,制定计划以及实施/测试/重构。重要的是要了解允许的字符类型,角色必须出现多少次以及要遵循的任何约束。 REGEX用法的实际示例
  • 包括匹配密码,URL,特定的HTML标签和重复的单词。这些示例证明了字符范围,断言,条件,群体等的使用。
  • >
  • > REGEX是一种强大的工具,但它也可能很复杂且难以管理。因此,有时使用几个较小的正直而不是一个大的正则是更有效的。注意小组捕获也可能使匹配对于进一步的处理更有用。
  • >
  • 正则表达式通常用于执行搜索,替换子字符串和验证字符串数据。本文提供了通过复杂的正则表达式进行的提示,技巧,资源和步骤。 如果您没有基本技能,则可以通过我们的初学者指南学习正则表达式。作为正则表达式的奥术,您不会花很长时间学习这些概念。 有许多书籍,文章,网站来解释正则表达式,因此,我不想写另一个说明,而是要直接进行更实用的例子:
匹配密码
  • 匹配url
  • 匹配特定的HTML标签
  • 匹配重复的单词
  • 您可以在此链接上找到有用的备忘单。除了大量有用的资源外,Lea Verou在这篇文章的底部还有一个会议视频 - 它有点长,但在打破正则表达式方面非常出色。
  • 如何构建良好的正则
正则表达式通常在开发人员的日常工作中使用 - 日志分析,形式提交验证,查找和替换等等。这就是为什么每个好的开发人员都应该知道如何使用它们,但是建造好的正则是什么最佳实践是什么?

1。定义方案

使用自然语言来定义问题,将使您更好地了解使用方法。这些单词可以和必须在定义中使用,可用于描述强制性约束或断言。 以下是一个示例:

字符串必须以“ H”开头,并以“ O”结束(例如,Hello,Halo)。
  • 字符串可以包裹在括号中。
  • 2。制定计划
对问题有很好的定义后,我们可以理解我们的正则表达中涉及的元素类型:

允许的字符类型(字,数字,新行,范围,…)?
  • 一个角色必须出现多少次(一个或多个,一次,…)? 在
  • 3。实施/测试/重构
  • 拥有实时测试环境以测试和改善正则表达非常重要。有Regex101.com,Regexr.com和Debuggex.com等网站提供一些最佳环境。 为了提高正则效率,您可以尝试回答以下其他问题:

    字符类是否正确定义了特定域?

    >
      我应该编写更多测试字符串以涵盖更多用例吗?
    • 是否可以找到和隔离一些问题并分别测试它们?
    • >我应该用子图案,组,条件等重构表达式,以使其更小,更清晰,更灵活?
    • >
    • 实例
    • 以下示例的目的不是写一个只能解决问题的表达式,而是使用特定用例,使用字符范围,断言,条件,群体等的重要元素编写最有效的表达式。
    • 匹配密码

    设想:

    长度

    6至12个字符

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

    匹配的URL

    用实际的例子揭开正面的神秘面纱 设想:
    • 必须从http或https或ftp开始,然后是://
    • >
    • 必须匹配有效的域名
    • 可以包含端口规范(http://www.sitepoint.com:80)
    • 可以包含数字,字母,点,连字符,前向斜线,多次
    图案: ^(http | https | ftp):[/] {2}([a-za-z0-9--。]。[a-za-z] {2,4})(:[0-9])? /?([A-ZA-Z0-9 -._??,'/\&%$#=〜]*)*) 使用 ^(http | https | ftp):[/] {2}的第一种情况很容易解决。 要匹配域名,我们需要牢记,要有效,它只能包含字母,数字,连字符和点。在我的示例中,我将标点符号后的字符数量从2到4限制在2到4,但可以扩展到.Rocks或。编码等新域。域名匹配([A-ZA-Z0-9-。]。[A-ZA-Z] {2,4})。 可选端口规范与简单(:[0-9])? 一个URL可以包含多次重复多次的多个斜线和多个字符(请参阅RFC3986),通过在组中使用一系列字符可以匹配([a-za-Z0-9-._??,'/\&%$ #=〜]*)。 将每个重要元素与组捕获()匹配非常有用,因为它将仅返回我们需要的匹配项。请记住,某些角色需要逃脱。 下面,每个副本都解释了:
    1. ^在字符串开始时断言位置
    2. 捕获组(http | https | ftp),捕获http或https或ftp
    3. :逃脱的角色,匹配角色:字面意思
    4. [ /] {2}恰好匹配逃脱的字符 /
    5. 的2倍
    6. 捕获组([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敏感)>
    7. 捕获组(:[0-9])?
      • 量词?匹配零次或更多次之间的组
      • :匹配字符:字面上
      • [0-9]匹配0和9次或多次之间的单个字符
      /?匹配字符 /字面零或一次
    8. >捕获组([a-za-z0-9 -._??,'/\&%$#=〜]*)*):
    9. [a-za-z0-9 -._??,'/\&%$#=〜]*匹配零和无限时间在a-z,a-z,a-z,0-9的单个字符之间: - ._?,'/&%$#=〜。
      匹配HTML TAG
    设想:

    开始标签必须以用实际的例子揭开正面的神秘面纱>结尾
      结束标签必须以一个或多个字符开始,然后以>
    • 结尾。
    • 我们必须匹配标签元素中的内容
    • 图案: (。*?)1> 匹配起始标签和内部内容,它非常简单地使用和(。*?),但是在上面的模式中,我添加了一个有用的内容:对捕获组的引用。 每个由括号()定义的捕获组都可以使用其位置号,(第一个)(第二)(第三),这将允许进一​​步操作。 以上表达可以解释为:
    • 以开始
    捕获标签名称
    • 之后是一个或多个炭
    • >
    • 捕获标签内的内容
    • 名称必须在>
    • 之前捕获名称
    • 表达式中只有两个捕获组,标签名称和内容将返回一个非常清晰的匹配,即带有相关内容的标签名称列表。 让我们更深入地解释副本:
    捕获组([w])匹配任何单词字符a-za-z0-9_一次或多次
    1. 。*匹配零或更多次之间的任何字符(Newline除外)
    2. >匹配字符>字面上的
    3. 捕获组(。
    4. /匹配字符 /字面
    5. 1匹配与第一个捕获组相匹配的相同文本:([w])>
    6. >匹配字符>字面上
    7. 匹配重复的单词
    8. 设想:
    9. 单词是空间分开的

    我们必须匹配每个重复 - 非连续性

    图案: b(w)b(?=。*1) 这种正则表达似乎具有挑战性,但使用了先前显示的一些概念。 该模式引入了单词边界的概念。 单词边界B主要检查位置。当单词字符(即abcde)之后是非单词字符(即: - 〜,!)时,它与之匹配。 在下面,您可以找到单词边界的一些示例用途,以使其更清晰: - 鉴于短语正则表达式很棒 - 模式的准匹配是 - 模式w {3} b可以与单词的最后三个字母匹配:lar,ion,是,ome 以上表达可以解释为:
    • 匹配每个单词字符,后跟一个非字角色(在我们的情况空间中)
    • 检查是否已经存在匹配的单词
    • 在下面,您将找到每个子模式的解释:
      b字边界
    1. 捕获组([w])匹配任何字字符a-za-z0-9_
    2. >
    3. b字边界
    4. (?=。*1)正lookahead断言以下内容可以匹配:
      • 1匹配与首先捕获组相同的文本
      如果我们返回所有匹配,而不是仅返回第一个匹配项,则表达式将更有意义。有关更多信息,请参见php函数preg_match_all。
    5. 最终想法
    正则表达式是双刃剑。添加的复杂性越多,解决问题就越困难。这就是为什么有时很难找到可以匹配所有情况的正则表达式的原因,最好使用几个较小的正则表达式。 拥有一个良好的问题可能会非常有帮助,并且可以让您开始思考角色范围,约束,断言,重复,可选值等。对组捕获的更多关注将使匹配对进一步处理有用。随意改善示例中的表情,让我们知道您的工作方式!

    有用的资源

    在下面,您可以找到更多信息和资源,以帮助您的正则技能发展。 如果您发现未列出的有用的内容,请随时在文章中添加评论。

    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中文网其他相关文章!

    声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    PHP:服务器端脚本语言的简介PHP:服务器端脚本语言的简介Apr 16, 2025 am 12:18 AM

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

    PHP和网络:探索其长期影响PHP和网络:探索其长期影响Apr 16, 2025 am 12:17 AM

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

    为什么要使用PHP?解释的优点和好处为什么要使用PHP?解释的优点和好处Apr 16, 2025 am 12:16 AM

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

    揭穿神话:PHP真的是一种死语吗?揭穿神话:PHP真的是一种死语吗?Apr 16, 2025 am 12:15 AM

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

    PHP与Python辩论:哪个更好?PHP与Python辩论:哪个更好?Apr 16, 2025 am 12:03 AM

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

    PHP的目的:构建动态网站PHP的目的:构建动态网站Apr 15, 2025 am 12:18 AM

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

    PHP:处理数据库和服务器端逻辑PHP:处理数据库和服务器端逻辑Apr 15, 2025 am 12:15 AM

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

    您如何防止PHP中的SQL注入? (准备的陈述,PDO)您如何防止PHP中的SQL注入? (准备的陈述,PDO)Apr 15, 2025 am 12:15 AM

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

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    4 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    4 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    4 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它们
    4 周前By尊渡假赌尊渡假赌尊渡假赌

    热工具

    mPDF

    mPDF

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

    Dreamweaver Mac版

    Dreamweaver Mac版

    视觉化网页开发工具

    安全考试浏览器

    安全考试浏览器

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

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    PhpStorm Mac 版本

    PhpStorm Mac 版本

    最新(2018.2.1 )专业的PHP集成开发工具