編輯推薦
正則錶達式是一種威力無比強大的武器,可以完成各種復雜的文本處理工作,被稱為程序員的“瑞士軍刀”。
《正則錶達式必知必會(修訂版)》是全球程序員公認的正則錶達式速成教材。它精選瞭正則錶達式中最常用、最重要的知識,從簡單的文本匹配開始,通過簡明又實用的示例,循序漸進地介紹更高級的內容,包括迴溯引用、前後查找、嵌入條件等。而且書中的內容在保持語言和平颱中立的同時,還兼顧瞭各種平颱之間的差異。通過閱讀本書,讀者能夠在輕鬆的氛圍中迅速掌握正則錶達式的精髓,並可立即運用所學,解決實際問題。
內容簡介
正則錶達式是一種威力無比強大的武器,可以完成各種復雜的文本處理工作,被稱為程序員的“瑞士軍刀”。
《正則錶達式必知必會(修訂版)》是全球程序員公認的正則錶達式速成教材。它精選瞭正則錶達式中最常用、最重要的知識,從簡單的文本匹配開始,通過簡明又實用的示例,循序漸進地介紹更高級的內容,包括迴溯引用、前後查找、嵌入條件等。而且書中的內容在保持語言和平颱中立的同時,還兼顧瞭各種平颱之間的差異。通過閱讀本書,讀者能夠在輕鬆的氛圍中迅速掌握正則錶達式的精髓,並可立即運用所學,解決實際問題。
更多精彩,點擊進入品牌店查閱>>
作者簡介
《正則錶達式必知必會(修訂版)》從簡單的文本匹配開始,循序漸進地介紹瞭很多復雜內容,其中包括迴溯引用、條件性求值和前後查找,等等。每章都為讀者準備瞭許多簡明又實用的示例,有助於全麵、係統、快速掌握正則錶達式,並運用它們去解決實際問題。正則錶達式是一種威力比強大的武器,幾乎在所有的程序設計語言裏和計算機平颱上都可以用它來完成各種復雜的文本處理工作。而且《正則錶達式必知必會(修訂版)》的內容在保持語言和平颱中立的同時,還兼顧瞭各種平颱之間的差異。通過閱讀本書,讀者能夠在輕鬆的氛圉中迅速掌握正則錶達式的精髓,並可立即運用所學,解決實際問題。
精彩書評
BenForta,擁有三十多年的計算機領域從業經驗,是世界知名的技術作傢,也是Adobe技術界知名專傢,目前擔任Adobe公司的客戶培訓部高級主管。他撰寫的《SQL必知必會》《MySQL必知必會》等因短小精悍、可快速入手而受到讀者好評,已被翻譯為十幾種文字。
目錄
第1章正則錶達式入門1.1正則錶達式的用途1.2如何使用正則錶達式1.2.1用正則錶達式進行搜索1.2.2用正則錶達式進行替換1.3什麼是正則錶達式1.4使用正則錶達式1.5在繼續學習之前1.6小結
第2章匹配單個字符2.1匹配純文本2.1.1有多個匹配結果2.1.2字母的大小寫問題2.2匹配任意字符2.3匹配特殊字符2.4小結
第3章匹配一組字符3.1匹配多個字符中的某一個3.2利用字符集閤區間3.3取非匹配3.4小結
第4章使用元字符4.1對特殊字符進行轉義4.2匹配空白字符4.3匹配特定的字符類彆4.3.1匹配數字(與非數字)4.3.2匹配字母和數字(與非字母和數字)4.3.3匹配空白字符(與非空白字符)4.3.4匹配十六進製或八進製數值4.4使用POSIX字符類4.5小結
第5章重復匹配5.1有多少個匹配5.1.1匹配一個或多個字符5.1.2匹配零個或多個字符5.1.3匹配零個或一個字符5.2匹配的重復次數5.2.1為重復匹配次數設定一個精確的值5.2.2為重復匹配次數設定一個區間5.2.3匹配"至少重復多少次"5.3防止過度匹配5.4小結
第6章位置匹配6.1邊界6.2單詞邊界6.3字符串邊界
6.4小結第7章使用子錶達式7.1什麼是子錶達式7.2子錶達式7.3子錶達式的嵌套7.4小結
第8章迴溯引用:前後一緻匹配8.1迴溯引用有什麼用8.2迴溯引用匹配8.3迴溯引用在替換操作中的應用8.4小結
第9章前後查找9.1前後查找9.2嚮前查找9.3嚮後查找9.4把嚮前查找和嚮後查找結閤起來9.5對前後查找取非9.6小結
第10章嵌入條件10.1為什麼要嵌入條件10.2正則錶達式裏的條件10.2.1迴溯引用條件10.2.2前後查找條件10.3小結
附錄A常見應用軟件和編程語言中的正則錶達式附錄B常見問題的正則錶達式解決方案附錄C正則錶達式測試器
精彩書摘
9.5對前後查找取非 到目前為止正如你看到的那樣,嚮前查找和嚮後查找通常用來匹配文本,其目的是為瞭確定將被返迴為匹配結果的文本的位置(通過指定匹配結果的前後必須是哪些文本)。這種用法被稱為正嚮前查找(positivelookahead)和正嚮後查找(positive lookbehind)。術語“正”指的是尋找匹配的事實。 前後查找還有一種不太常見的用法叫作負前後查找(negativelookaround)。負嚮前查找(negative lookahead)將嚮前查找不與給定模式相匹配的文本,負嚮後查找(negative lookbehind)將嚮後查找不與給定模式相匹配的文本。 我們在第3章曾經介紹過一個用來對字符集閤進行取非處理的操作符;,但;不能用來對前後查找進行取非處理。這裏必須使用另外一種語法:前後查找必須用!來取非(它將替換掉=)。錶9—1列齣瞭所有的前後查找操作符。
前言/序言
正則錶達式(regularexpression)和正則錶達式語言已經齣現很多年瞭。正則錶達式的專傢們早就掌握瞭這種威力無比強大的武器,它可以用來完成各種復雜的文本處理工作。更重要的是,這種武器可以在幾乎所有的程序設計語言裏和幾乎所有的計算機平颱上使用。
這是個好消息,但我還要告訴你一個壞消息:長期以來,隻有一些真正的專傢纔能真正掌握正則錶達式。甚至有很多人根本沒有聽說過正則錶達式這個概念,更不用說用它們來解決問題瞭。至於少數勇於涉獵正則錶達式領域的人們,又往往會因為正則錶達式難以理解而淺嘗輒止或總是在原地徘徊。這不能不說是一種悲哀,因為正則錶達式其實並沒有人們想象中的那麼復雜。隻要你能清晰地理解你想要解決的問題並學會如何使用正則錶達式,就可以輕而易舉地解決這些問題。
正則錶達式不為大多數人所掌握的原因之一是關於這方麵的好資料太少瞭。雖然有很多網站在吹噓它們的正則錶達式教程如何全麵,但實際情況卻是高質量的正則錶達式學習資源相當稀缺。即便能夠找到幾本介紹正則錶達式的書,它們又往往過於偏重語法而顯得不夠實用——知道如何定義{或是知道+與*之間的區彆並不等於真正掌握瞭正則錶達式的用法。在筆者看來,那些書反而把簡單的問題弄得更復雜瞭:在學習和使用正則錶達式的時候,重要的並不是你知道多少個特殊字符,而是你會不會運用它們去解決實際問題。
你拿在手裏的這本書並不打算成為一本正則錶達式的大全。如果你想要的是那樣一本書,你應該去閱讀JeffreyFriedl編寫的《精通正則錶達式(第3版)》。Friedl先生是業內公認的正則錶達式專傢,他的書絕對是這方麵最權威和全麵的著作。本人對Friedl先生沒有絲毫成見,但他的書不適閤初學者也是實情;如果你隻打算盡快完成手頭的工作而不是要鑽研正則錶達式的內部原理,他的書也不很適用。這並不是說那本書裏的信息沒有用,隻是它在你想要給HTML錶單添加一些驗證功能或者隻想對解析的文本進行替換的時候派不上什麼用場。如果你想盡快學會正則錶達式的基本用法,你將發現自己陷入瞭一個兩難境地:要麼找不到簡明易學的參考資料,要麼找到的參考資料過於深奧而讓你不知該如何起步。
這正是促使筆者編寫本書的原因。本書所講授的正則錶達式知識正是你們在剛起步時最需要的,我們將從簡單的文本匹配開始循序漸進地嚮大傢介紹許多復雜的專題,其中包括迴溯引用(backreference)、條件性求值(conditionalevaluation)和前後查找(lookingaround)等。本書最大的優勢是所學到的知識可以立即運用於實踐中:我們在每章裏都為大傢準備瞭許多簡明又實用的示例,可以幫助你全麵、係統、快速地掌握正則錶達式並運用它們去解決實際問題,而每章在10分鍾甚至更短的時間裏就可以學完。
還等什麼,趕快翻到第1章開始今天的學習吧,你肯定會立刻感受到正則錶達式的強大威力。
目標讀者
本書的目標讀者是以下幾類人員。
第一次接觸正則錶達式。
希望自己能夠快速掌握正則錶達式的基本用法。
想使用一種強大的工具(雖然它不那麼容易掌握)去解決實際問題。
正在開發Web應用軟件並需要進行復雜的錶單和文本處理。
正使用著Perl、ASP、VisualBasic、.NET、C#、Java、JSP、PHP、ColdFusion語言(或更多其他程序設計語言),希望在開發的應用程序裏使用正則錶達式。
希望在不求助於其他人的前提下盡快掌握正則錶達式。
《深入理解 Java:從入門到精通》 內容簡介 《深入理解 Java:從入門到精通》是一本旨在為廣大 Java 開發者,無論是初學者還是有一定經驗的工程師,提供全麵、深入 Java 語言學習路徑的著作。本書並非泛泛而談,而是聚焦於 Java 語言的核心概念、高級特性以及在實際開發中經常遇到的問題,通過理論與實踐相結閤的方式,引導讀者構建紮實、牢固的 Java 基礎,並逐步邁嚮精通的境界。 本書內容編排循序漸進,從 Java 語言最基礎的語法特性入手,逐步深入到麵嚮對象設計的精髓,再到並發編程、內存管理、JVM 原理等更深層次的主題。每一章節都力求清晰易懂,避免使用過於晦澀的術語,並通過豐富的代碼示例和詳盡的解釋,幫助讀者理解抽象的概念。 第一部分:Java 基礎精講 本部分是為 Java 初學者量身定製的入門指南,旨在幫助讀者快速掌握 Java 編程的基本要素。 Java 語言概述與環境搭建: 介紹 Java 語言的起源、特點、發展曆程,以及如何搭建 Java 開發環境,包括 JDK 的安裝與配置、IDE 的選擇與使用(如 IntelliJ IDEA、Eclipse)等。我們將深入講解 Java 虛擬機 (JVM)、Java 運行時環境 (JRE) 和 Java 開發工具包 (JDK) 的關係,讓讀者從宏觀上理解 Java 的運行機製。 基本語法與數據類型: 詳細講解 Java 的基本語法結構,包括變量、常量、運算符、錶達式、語句等。重點介紹 Java 的八種基本數據類型(byte, short, int, long, float, double, char, boolean)以及它們的取值範圍和使用注意事項。還會涉及包裝類(Wrapper Classes)的概念及其與基本數據類型的區彆與聯係。 控製流程: 學習如何使用條件語句(if-else, switch)和循環語句(for, while, do-while)來控製程序的執行流程。通過實際案例,演示如何運用這些結構解決實際問題,並強調代碼的可讀性和效率。 數組與字符串: 深入講解 Java 中數組的聲明、初始化、訪問和操作,以及多維數組的應用。同時,詳細介紹 String 類的常用方法、字符串的不可變性、StringBuilder 和 StringBuffer 的區彆與使用場景,這對於處理文本信息至關重要。 麵嚮對象編程 (OOP) 基礎: 這是 Java 語言的核心。我們將從類(Class)、對象(Object)、封裝(Encapsulation)、繼承(Inheritance)和多態(Polymorphism)這四大基本概念入手,用通俗易懂的語言和生動形象的比喻進行闡述。 類與對象: 講解如何定義類,如何創建對象,以及類成員(屬性和方法)的使用。 封裝: 強調訪問修飾符(public, private, protected, default)的作用,以及如何通過 getters 和 setters 方法實現數據的安全訪問。 繼承: 介紹 `extends` 關鍵字,子類與父類的關係,方法重寫(Override)與方法重載(Overload)的區彆,以及 `super` 關鍵字的用法。 多態: 解釋運行時多態和編譯時多態,以及接口(Interface)和抽象類(Abstract Class)在實現多態中的作用。 接口與抽象類: 深入探討接口和抽象類的定義、實現和使用。理解它們在設計模式和代碼復用中的重要性,並學會何時使用接口,何時使用抽象類。 異常處理: 學習 Java 的異常處理機製,包括 `try-catch-finally` 塊、`throw` 和 `throws` 關鍵字。掌握如何捕獲和處理運行時異常及受檢異常,編寫健壯的代碼。 第二部分:Java 核心進階 本部分將帶領讀者深入 Java 的核心特性,為構建復雜、高效的應用程序打下堅實基礎。 集閤框架 (Collections Framework): 詳細介紹 Java 集閤框架的體係結構,包括 `Collection` 接口及其主要實現類(如 `List`、`Set`、`Queue`)和 `Map` 接口及其主要實現類(如 `HashMap`、`TreeMap`)。講解它們的特性、適用場景和性能特點,並重點分析 `ArrayList`、`LinkedList`、`HashSet`、`TreeSet`、`HashMap`、`TreeMap` 等類的內部實現原理。 泛型 (Generics): 講解泛型的作用,如何聲明和使用泛型類、泛型接口和泛型方法,以及泛型擦除(Type Erasure)的原理。泛型能夠提高代碼的類型安全性和復用性。 IO 流 (Input/Output Streams): 深入理解 Java 的 IO 流體係,包括字節流(`InputStream`, `OutputStream`)和字符流(`Reader`, `Writer`)的分類與使用。重點介紹常用的 IO 類,如 `FileInputStream`, `FileOutputStream`, `BufferedReader`, `BufferedWriter`, `ObjectInputStream`, `ObjectOutputStream`。還將探討緩衝流、轉換流、數據流以及 NIO (New IO) 的基本概念。 多綫程與並發編程: 這是 Java 語言中最具挑戰性但也最重要的一部分。我們將從綫程的創建方式(繼承 `Thread` 類、實現 `Runnable` 接口)開始,講解綫程的生命周期、綫程同步(`synchronized` 關鍵字、`Lock` 接口)、綫程通信(`wait()`, `notify()`, `notifyAll()`)、綫程池(`ExecutorService`)以及並發工具類(如 `Semaphore`, `CountDownLatch`, `CyclicBarrier`)。深入剖析常見的並發問題,如競態條件(Race Condition)、死鎖(Deadlock)和活鎖(Livelock)。 JVM 原理與內存管理: 揭秘 Java 虛擬機 (JVM) 的工作原理,包括類加載機製、內存區域劃分(堆、棧、方法區、程序計數器、本地方法棧)以及垃圾迴收(Garbage Collection)機製。理解堆內存的分配(新生代、老年代)、垃圾迴收算法(如標記-清除、復製、標記-整理)以及 GC 日誌的分析,能夠幫助開發者寫齣更高效、內存占用更小的程序。 反射 (Reflection): 學習如何使用 Java 反射機製在運行時動態地獲取類的信息、創建對象、調用方法和訪問屬性。理解反射的應用場景,如框架設計、單元測試和序列化。 注解 (Annotations): 講解注解的定義、使用和元注解。掌握如何自定義注解,以及如何通過反射或 APT (Annotation Processing Tool) 來處理注解,實現代碼的元數據管理和簡化開發。 第三部分:Java 實踐與設計 本部分將引導讀者將所學的 Java 知識應用於實際開發,並提升代碼設計能力。 常用 API 詳解: 深入介紹 Java 標準庫中一些常用且重要的類庫,例如 `java.util` 中的日期時間 API (`java.time`)、`java.lang.Math`、`java.lang.System` 等,以及 `java.net` 中的網絡編程基礎。 數據庫連接 (JDBC): 學習如何使用 JDBC API 連接到各種關係型數據庫,執行 SQL 語句,處理查詢結果。講解連接池的概念和常用實現。 文件操作與序列化: 進一步鞏固文件讀寫操作,並深入理解 Java 的對象序列化(Serialization)機製,包括如何實現 `Serializable` 接口,以及 `transient` 關鍵字的作用。 網絡編程基礎: 介紹 Java 的網絡編程模型,包括 Socket 編程(TCP/IP 和 UDP),以及 HTTP 協議的基本交互。 常用設計模式: 講解單例模式、工廠模式、觀察者模式、策略模式、裝飾器模式、適配器模式等經典設計模式,並結閤 Java 代碼示例演示其應用。理解設計模式的目的是為瞭提高代碼的可維護性、可擴展性和可重用性。 單元測試: 強調編寫單元測試的重要性,並介紹 JUnit 框架的使用,如何編寫有效的單元測試用例來保證代碼質量。 本書特色 結構清晰,邏輯嚴謹: 從基礎到高級,層層遞進,確保讀者能夠係統性地掌握 Java 知識。 代碼示例豐富,貼近實戰: 大量精選的、可運行的代碼示例,幫助讀者將理論知識轉化為實踐能力。 深入剖析原理: 不僅講解“怎麼做”,更深入探討“為什麼”,幫助讀者理解 Java 語言的底層機製。 語言通俗易懂: 避免生僻詞匯,力求用最清晰的語言解釋最復雜的概念。 覆蓋核心主題: 涵蓋瞭 Java 開發者必須掌握的關鍵技術點。 無論您是準備踏入 Java 開發領域的新手,還是希望鞏固和提升現有技能的開發者,《深入理解 Java:從入門到精通》都將是您不可多得的學習伴侶。通過本書的學習,您將能夠自信地使用 Java 語言解決實際開發中的各種挑戰,為您的職業生涯打下堅實的基礎。