搜尋
首頁後端開發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.如果您聽不到任何人,如何修復音頻
    1 個月前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它們
    1 個月前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    WebStorm Mac版

    WebStorm Mac版

    好用的JavaScript開發工具

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    將Eclipse與SAP NetWeaver應用伺服器整合。

    VSCode Windows 64位元 下載

    VSCode Windows 64位元 下載

    微軟推出的免費、功能強大的一款IDE編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    Atom編輯器mac版下載

    Atom編輯器mac版下載

    最受歡迎的的開源編輯器