国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

正則表達式學習詳解

這篇具有很好參考價值的文章主要介紹了正則表達式學習詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

正則表達式

正則表達式(Regular Expression),通常簡稱為正則或正則表達式,是一種用于描述字符串模式的工具。它是由一系列字符和特殊字符組成的字符串,用于定義搜索模式或進行字符串匹配、替換、提取等操作。

正則表達式提供了一種靈活、強大且通用的方式來處理文本。它可以用于各種編程語言和文本編輯器中,例如Python、Java、JavaScript等,幾乎所有語言很多場景都可以用到正則表達式。

使用正則表達式,可以進行以下操作:

  • 匹配:檢查一個字符串是否與指定的模式匹配。
  • 搜索:在一個字符串中搜索滿足指定模式的內(nèi)容。
  • 替換:將字符串中滿足指定模式的部分替換為其他內(nèi)容。
  • 提?。簭囊粋€字符串中提取出滿足指定模式的內(nèi)容。

正則表達式使用一些特殊字符和語法來表示不同的匹配規(guī)則,例如:

  • 字符匹配:使用普通字符表示匹配該字符本身。
  • 字符類:使用方括號 [] 表示匹配指定范圍內(nèi)的字符。
  • 量詞:使用特殊字符表示匹配字符出現(xiàn)的次數(shù),如 *、+、?、{}。
  • 邊界匹配:使用特殊字符表示匹配字符串的邊界或位置,如 ^、$、\b。
  • 分組:使用圓括號 () 表示將一組字符作為一個單元進行匹配或提取。

正則表達式的語法和特性因不同的實現(xiàn)和工具而略有差異,但基本的概念和常用的模式匹配規(guī)則是通用的。

學習工具推薦:

下載與安裝

你可以使用以下兩種方式中的任意一個來下載安裝正則表達式測試器,這個工具源文本內(nèi)容不能輸入太多,要么有時候會匹配不成功。

  • 安裝版
    1. 下載 Regester安裝程序
    2. 解壓后運行 RegesterSetup.zh.exe
  • 綠色版
    1. 下載 Regester
    2. 解壓后運行 Regester.exe
    3. 如果無法啟動,請自行下載安裝 Microsoft .Net Framework 4.8 后再試

常見正則表達式命令和參數(shù)解釋:

  1. .(點號):匹配除換行符外的任意字符。

    • 示例:a.b 可以匹配 “aab”、“acb”、“adb” 等,但不匹配 “a\nb”。
  2. *:匹配前面的字符零次或多次。

    • 示例:ab*c 可以匹配 “ac”、“abc”、“abbc” 等。
  3. +:匹配前面的字符一次或多次。

    • 示例:ab+c 可以匹配 “abc”、“abbc” 等,但不匹配 “ac”。
  4. ?:匹配前面的字符零次或一次。

    • 示例:ab?c 可以匹配 “ac”、“abc”,但不匹配 “abbc”。
  5. [](字符類):匹配方括號內(nèi)的任意字符。

    • 示例:[abc] 可以匹配 “a”、“b”、“c” 中的任意一個字符。
  6. [^](否定字符類):匹配不在方括號內(nèi)的任意字符。

    • 示例:[^abc] 可以匹配除了 “a”、“b”、“c” 以外的任意字符。
  7. \d:匹配任意數(shù)字字符(0-9)。

    • 示例:\d+ 可以匹配一個或多個數(shù)字字符。
  8. \w:匹配任意字母、數(shù)字或下劃線字符。

    • 示例:\w+ 可以匹配一個或多個字母、數(shù)字或下劃線字符。
  9. \s:匹配任意空白字符(空格、制表符、換行符等)。

    • 示例:\s+ 可以匹配一個或多個空白字符。
  10. ^:匹配字符串的開頭。

    • 示例:^abc 可以匹配以 “abc” 開頭的字符串。
  11. $:匹配字符串的結尾。

    • 示例:abc$ 可以匹配以 “abc” 結尾的字符串。
  12. ()(分組):將字符組合成一個單元,可以對其進行操作。

    • 示例:(ab)+ 可以匹配 “ab”、“abab”、“ababab” 等。

零寬斷言匹配示例:

零寬斷言(Zero-width assertions)是正則表達式中的一種特殊語法,用于在匹配過程中對位置進行條件限制,而不匹配實際的字符。它們被稱為零寬度斷言,因為它們不會消耗字符串中的字符,僅用于確定匹配發(fā)生的位置。

零寬斷言分為正向斷言(Lookahead)和負向斷言(Lookbehind)兩種類型。正向斷言用于指定位置后面的條件,負向斷言用于指定位置前面的條件。

  1. 正向肯定預查(Positive Lookahead):

    • (?=abc):匹配后面緊跟著 “abc” 的位置。
    • 示例:a(?=bc) 可以匹配 “a”,但只有在后面跟著 “bc” 的情況下才匹配成功。
  2. 正向否定預查(Negative Lookahead):

    • (?!abc):匹配后面不緊跟著 “abc” 的位置。
    • 示例:a(?!bc) 可以匹配 “a”,但只有在后面不跟著 “bc” 的情況下才匹配成功。
  3. 負向肯定預查(Positive Lookbehind):

    • (?<=abc):匹配前面緊跟著 “abc” 的位置。
    • 示例:(?<=ab)c 可以匹配 “c”,但只有在前面緊跟著 “ab” 的情況下才匹配成功。
  4. 負向否定預查(Negative Lookbehind):

    • (?<!abc):匹配前面不緊跟著 “abc” 的位置。
    • 示例:(?<!ab)c 可以匹配 “c”,但只有在前面不跟著 “ab” 的情況下才匹配成功。

貪婪匹配非貪婪匹配

貪婪匹配(Greedy matching)和非貪婪匹配(Non-greedy matching)是正則表達式中量詞(匹配內(nèi)容多還是少)的匹配模式。

貪婪匹配

是指在滿足匹配條件的前提下,盡可能多地匹配字符。它會盡量擴展匹配的范圍,直到無法再匹配為止。貪婪匹配使用量詞 +、*、{n,} 等,默認情況下都是貪婪匹配。

例如:正則表達式 a+ 會盡量匹配連續(xù)重復的字符 “a”,直到遇到不是 “a” 的字符為止。

非貪婪匹配

是指在滿足匹配條件的前提下,盡可能少地匹配字符。它會盡量縮小匹配的范圍,以便允許后續(xù)的匹配得到滿足。非貪婪匹配使用量詞后面添加 ? 來表示。例如,正則表達式 a+? 會匹配盡可能少的連續(xù)重復的字符 “a”,以滿足匹配的條件。

通過比較貪婪匹配和非貪婪匹配,可以更好地控制正則表達式的匹配行為。貪婪匹配通常用于盡可能多地捕獲匹配的內(nèi)容,而非貪婪匹配通常用于盡可能少地匹配,特別是在需要處理嵌套結構或提取特定部分的情況下非常有用。

貪婪匹配示例:

正則表達式:[a-z]+
輸入字符串:abcdefg
匹配結果:abcdefg
解釋:貪婪匹配會盡可能多地匹配小寫字母。在這個示例中,正則表達式 [a-z]+ 匹配了整個字符串 abcdefg,因為它可以匹配一個或多個連續(xù)的小寫字母。
非貪婪匹配示例:

正則表達式:[a-z]+?
輸入字符串:abcdefg
匹配結果:a
解釋:非貪婪匹配使用 ? 后綴來指示盡可能少地匹配小寫字母。在這個示例中,正則表達式 [a-z]+? 只匹配了第一個小寫字母 “a”,因為它盡可能少地匹配滿足條件的字符。
貪婪匹配和非貪婪匹配的比較:

正則表達式:“.+”
輸入字符串:“Hello” “World”
匹配結果(貪婪匹配):“Hello” “World”
匹配結果(非貪婪匹配):“Hello”
解釋:貪婪匹配會盡可能多地匹配字符,因此 “.+” 會匹配整個字符串 “Hello” “World”。而非貪婪匹配則盡可能少地匹配字符,因此 “.+?” 只匹配了第一個字符串 “Hello”。
貪婪匹配和非貪婪匹配的比較:

正則表達式:[0-9]+
輸入字符串:12345
匹配結果(貪婪匹配):12345
匹配結果(非貪婪匹配):12345
解釋:無論是貪婪匹配還是非貪婪匹配,正則表達式 [0-9]+ 都會匹配整個字符串 12345,因為它可以匹配一個或多個連續(xù)的數(shù)字。

正則表達式練習題:

  1. 匹配郵箱地址:
    正則表達式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    示例輸入:example@example.com

^:表示匹配字符串的開頭。

\w+:表示匹配一個或多個字母、數(shù)字或下劃線,這部分匹配了郵箱地址的用戶名部分。

([-+.]\w+)*:表示匹配一個連字符、加號或句點后跟一個或多個字母、數(shù)字或下劃線的組合,這部分匹配了用戶名中的特殊字符及后續(xù)字符,可以重復零次或多次。

@:表示匹配郵箱地址中的@

\w+:表示匹配一個或多個字母、數(shù)字或下劃線,這部分匹配了郵箱地址的域名中的名稱部分。

([-.]\w+)*:表示匹配一個連字符或句點后跟一個或多個字母、數(shù)字或下劃線的組合,這部分匹配了域名中的特殊字符及后續(xù)字符,可以重復零次或多次。
.:表示匹配郵箱地址中的點號(.),需要使用反斜杠進行轉義。

\w+:表示匹配一個或多個字母、數(shù)字或下劃線,這部分匹配了郵箱地址中的頂級域名部分。

([-.]\w+)*:表示匹配一個連字符或句點后跟一個或多個字母、數(shù)字或下劃線的組合,這部分匹配了頂級域名中的特殊字符及后續(xù)字符,可以重復零次或多次。
$:表示匹配字符串的結尾。

  1. 匹配手機號碼(簡化版):
    正則表達式:^\d{11}$
    示例輸入:12345678901

^:表示匹配字符串的開頭。
\d:表示匹配一個數(shù)字。
{11}:表示前面的元素(即數(shù)字)必須連續(xù)重復11次。
$:表示匹配字符串的結尾。

  1. 匹配日期(格式為YYYY-MM-DD):
    正則表達式:^\d{4}-\d{2}-\d{2}$
    示例輸入:2023-08-09

^:表示匹配字符串的開頭。
\d:表示匹配一個數(shù)字。
{4}:表示前面的元素(即數(shù)字)必須連續(xù)重復4次,即匹配4位數(shù)字的年份。
-:表示匹配連字符。
\d{2}:表示前面的元素(即數(shù)字)必須連續(xù)重復2次,即匹配2位數(shù)字的月份。
-:表示匹配連字符。
\d{2}:表示前面的元素(即數(shù)字)必須連續(xù)重復2次,即匹配2位數(shù)字的日期。
$:表示匹配字符串的結尾。

  1. 匹配URL(以http或https開頭):
    正則表達式:^(http|https)://[^\s/$.?#].[^\s]*$
    示例輸入:https://www.example.com

^:表示匹配字符串的開頭。
(http|https):使用括號和豎線(|)表示分組,表示匹配 http 或 https。
??/:表示匹配 ??/ 字符串。
[^\s/$.?#]:表示匹配任意不是空白字符、斜杠、問號、點號或井號的字符。
.:表示匹配一個任意字符。
[^\s]*:表示匹配零個或多個任意不是空白字符的字符。
$:表示匹配字符串的結尾。

  1. 匹配整數(shù)(包括正負整數(shù)):
    正則表達式:^-?\d+$
    示例輸入:-123

^:表示匹配字符串的開頭。
-?:表示匹配可選的負號(減號)。- 表示匹配一個負號,? 表示前面的元素(即負號)可選。
\d+:表示匹配一個或多個數(shù)字。
$:表示匹配字符串的結尾。

  1. 匹配英文句子(以句號結尾):
    正則表達式:^[A-Z][^.!?]*\.$
    示例輸入:This is a sentence.

^:表示匹配字符串的開頭。
[A-Z]:表示匹配一個大寫字母。
[^.!?]*:表示匹配零個或多個非句號、非問號和非感嘆號的字符。這個部分用于匹配句子中除了句號以外的其他內(nèi)容。
.:表示匹配句號。需要使用反斜杠進行轉義,因為句號在正則表達式中是一個特殊字符。
$:表示匹配字符串的結尾。

  1. 匹配HTML標簽(包括屬性):
    正則表達式:<([a-z]+)(\s[a-z]+\s*=\s*"[^"]*")*\s*>.*<\/\1>$
    示例輸入:<div class="example">This is a div.</div>
    匹配結果:匹配成功

<([a-z]+):表示匹配以 < 開始的標簽,并捕獲標簽名。 [a-z]+ 表示匹配一個或多個小寫字母。
(\s[a-z]+\s*=\s*"[^"]*")*:表示匹配零個或多個屬性,每個屬性由一個或多個小寫字母組成的屬性名、可選的空白字符、等號、可選的空白字符、以及由雙引號包圍的屬性值組成。這部分用于匹配標簽中的屬性。
\s*>:表示匹配以空白字符結尾并以 > 結束的標簽起始部分。
.*:表示匹配零個或多個任意字符,用于匹配標簽內(nèi)的內(nèi)容。
</\1>:表示匹配以 </ 開始、后跟與起始標簽相同的標簽名、以 > 結束的結束標簽。 \1 表示引用第一個捕獲組中的標簽名。

  1. 匹配IP地址(簡易版):
    正則表達式:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
    示例輸入:192.168.0.1
    匹配結果:匹配成功

^:表示匹配字符串的開頭。
\d{1,3}:表示匹配一個由 1 到 3 位數(shù)字組成的部分。
.:表示匹配一個點號(.)。需要使用反斜杠進行轉義,因為點號在正則表達式中是一個特殊字符。
.:表示匹配任意字符。
$:表示匹配字符串的結尾。

  1. 匹配郵政編碼(6位數(shù)字):
    正則表達式:^\d{6}$
    示例輸入:123456
    匹配結果:匹配成功

^:表示匹配字符串的開頭。
\d{6}:表示匹配六個連續(xù)的數(shù)字。
\d:表示匹配一個數(shù)字。
{6}:表示前面的元素(即數(shù)字)重復出現(xiàn)六次。
$:表示匹配字符串的結尾。

  1. 匹配用戶名(由字母、數(shù)字、下劃線組成,長度為4-16位):
    正則表達式:^[a-zA-Z0-9_]{4,16}$
    示例輸入:user_123
    匹配結果:匹配成功

^:表示匹配字符串的開頭。
[a-zA-Z0-9_]:表示匹配一個字母(大小寫)、數(shù)字或下劃線字符。
{4,16}:表示前面的元素(即字母、數(shù)字或下劃線)重復出現(xiàn) 4 到 16 次,限制了字符串的長度范圍。
$:表示匹配字符串的結尾。

我們?yōu)槭裁葱枰獙W習正則表達式:

  1. 文本處理和搜索: 正則表達式是一種強大的工具,可用于在文本中進行搜索、匹配、替換和提取操作。它們可以幫助你快速有效地處理和操縱文本數(shù)據(jù)。

  2. 模式匹配和驗證: 正則表達式是用于匹配和驗證特定模式的工具。你可以使用它們來驗證輸入數(shù)據(jù)的格式、匹配特定模式的字符串,例如郵箱地址、URL、電話號碼等。

  3. 編程和腳本語言支持: 正則表達式在許多編程語言和腳本語言中都有廣泛的支持,包括 Python、JavaScript、Java、C#等。了解正則表達式可以幫助你在編程中更好地處理字符串操作。

  4. 文本編輯器和IDE: 許多文本編輯器和集成開發(fā)環(huán)境(IDE)都支持正則表達式搜索和替換功能。掌握正則表達式可以提高你在編碼和文本編輯過程中的效率。

  5. 數(shù)據(jù)清洗和提?。?/strong> 在數(shù)據(jù)處理和清洗過程中,正則表達式可以幫助你快速提取、篩選和轉換數(shù)據(jù)。它們特別適用于處理大量文本數(shù)據(jù)或具有特定格式的數(shù)據(jù)。

  6. 網(wǎng)絡爬蟲和數(shù)據(jù)抓?。?/strong> 當你需要從網(wǎng)頁或其他來源中抓取數(shù)據(jù)時,正則表達式可以幫助你定位和提取所需的信息。它們是構建簡單的網(wǎng)絡爬蟲和數(shù)據(jù)抓取工具的有用工具。

學習正則表達式可以提升你在文本處理、模式匹配、數(shù)據(jù)清洗和編程方面的技能。它們是處理和操作文本的強大工具,廣泛應用于軟件開發(fā)、數(shù)據(jù)分析、文本處理等領域。掌握正則表達式將為你提供更多的靈活性和能力來處理和操作各種類型的文本數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-637271.html

到了這里,關于正則表達式學習詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python正則表達式之學習正則表達式三步曲

    ????????正則表達式描述了一種字符串匹配的模式,可以用來檢查一個串的有無某子串,或者做子串匹配替換,取出子串等操作。也可以說正則表達式就是字符串的匹配規(guī)則,也可以理解為是一種模糊匹配,匹配滿足正則條件的字符串。 ????????1、數(shù)據(jù)驗證(eg:表單驗

    2024年02月15日
    瀏覽(95)
  • 正則表達式詳解

    正則表達式(Regular Expression),通常簡稱為正則或正則表達式,是一種用于描述字符串模式的工具。它是由一系列字符和特殊字符組成的字符串,用于定義搜索模式或進行字符串匹配、替換、提取等操作。 正則表達式提供了一種靈活、強大且通用的方式來處理文本。它可以用

    2024年01月17日
    瀏覽(21)
  • shell 正則表達式詳解

    shell 正則表達式詳解

    目錄 正則表達式 一,什么是正則表達式 二,為什么使用正則表達式 三,如何使用正則表達式 示例: 四,基本正則表達式 基本正則表達式示例: 正則表達式字符集示例: 五,擴展正則表達式 擴展正則表達式示例: 擴展: ? ? ? ?正則表達式是通過一些特殊字符的排列,

    2024年01月17日
    瀏覽(21)
  • 正則表達式 之 斷言詳解

    正則表達式 之 斷言詳解

    正則表達式的先行斷言和后行斷言一共有 4 種形式: (?=pattern)?零寬正向先行斷言(zero-width positive lookahead assertion) (?!pattern)?零寬負向先行斷言(zero-width negative lookahead assertion) (?=pattern)?零寬正向后行斷言(zero-width positive lookbehind assertion) (?!pattern)?零寬負向后行斷言(zero-width neg

    2024年02月11日
    瀏覽(20)
  • Linux文本處理工具和正則表達式

    Linux文本處理工具和正則表達式

    Linux文本處理工具和正則表達式 cat 最常用的文件查看命令;當不指明文件或者文件名為一杠’-\\\'時,讀取標準輸入。 more 默認將多行文本滿屏輸出,只允許向文本末尾翻頁(空格鍵滿屏翻頁;回車鍵單行翻頁),閱讀到文末自動退出。 用法 一般使用管道傳給more來閱讀內(nèi)容超過

    2024年02月13日
    瀏覽(35)
  • MySQL正則表達式 | 事務詳解

    MySQL正則表達式 | 事務詳解

    目錄 一、正則表達式 實例操作 二、事務 事務控制語句 MYSQL 事務處理主要有兩種方法 SQL測試代碼 PHP中使用事務實例 使用保留點 SAVEPOINT MySQL可以通過? LIKE ...% ?來進行模糊匹配。 MySQL 同樣也支持其他正則表達式的匹配, MySQL中使用 REGEXP 操作符來進行正則表達式匹配。 如果

    2023年04月18日
    瀏覽(17)
  • python 之正則表達式詳解

    python 之正則表達式詳解

    分清字符串與字符 在Python中,前綴 r 或 R 表示原始字符串。這種原始字符串中的反斜杠字符 被視為普通字符,而不是轉義字符。這在處理正則表達式、文件路徑等需要保留反斜杠原始含義的情況下非常有用。 原始字符串的特點: 反斜杠不進行轉義: 在普通字符串中,反斜

    2024年02月06日
    瀏覽(33)
  • 機器學習與數(shù)據(jù)科學-專題1 Python正則表達式-【正則表達式入門-1】

    機器學習與數(shù)據(jù)科學-專題1 Python正則表達式-【正則表達式入門-1】

    為了完成本關任務,你需要掌握: 在 Python 中使用正則表達式; 最基礎正則表達式; 正則匹配函數(shù)。 在 Python 中使用正則表達式 正可謂人生苦短,我用 Python。Python 有個特點就是庫非常多,自然擁有正則匹配這種常見的庫,并且此庫已經(jīng)嵌入在 Python 標準庫中,使用起來非常

    2024年01月22日
    瀏覽(109)
  • Python 正則表達式:強大的文本處理工具

    正則表達式是一種強大的文本匹配和處理工具,它可以用來在字符串中查找、替換和提取符合某種規(guī)則的內(nèi)容。在Python中,使用re模塊可以輕松地操作正則表達式,它提供了豐富的功能和靈活的語法。 正則表達式在許多場景中都非常有用。以下是一些常見的應用場景: 數(shù)據(jù)清

    2024年02月09日
    瀏覽(30)
  • Notepad++工具通過正則表達式批量替換內(nèi)容

    Notepad++工具通過正則表達式批量替換內(nèi)容

    Ctrl+H彈出小窗口;查找目標輸入$,替換為輸入特定字符串;選中循環(huán)查找,查找模式選正則表達式;最后點擊全部替換 Ctrl+H彈出小窗口;查找目標輸入^,替換為輸入特定字符串;選中循環(huán)查找,查找模式選正則表達式;最后點擊全部替換 Ctrl+H彈出小窗口;查找目標輸入 相

    2024年02月15日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包