日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 正则匹配括号是否成对_十分钟学会正则表达式

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 正则匹配括号是否成对_十分钟学会正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正則表達式用處挺廣的,主要用于處理字符串。

正則引擎

想要在計算機語言中使用正則表達式,那么這門計算機語言必須要利用正則引擎去實現相應的正則庫。主要的正則引擎分為以下兩類:

  • DFA 確定性的狀態機。不使用”回溯”,效率高,但是支持的正則表達式語法有限。
  • NFA 非確定性狀態機。構造簡單,使用”回溯算法”,支持大多數的正則語法,是目前使用最廣泛的正則引擎,大多數計算機語言例如Java、PHP、Ruby、Python等都是使用的NFA正則引擎。

語言實現

不同的語言對正則的實現不同,暴露出來的方法也不同,但方法的作用其實都是大同小異,這里用PHP語言做例子。

匹配字符串

  • preg_match(string $pattern, string $subject[, array &$matches]) 使用很頻繁。函數返回匹配到的結果的次數。只匹配一次,參數matches只返回第一條結果。
  • preg_match_all(string $pattern, string $subject[, array &$matches]) 使用很頻繁。函數返回匹配到的結果的次數。參數matches只返回所有結果。

替換字符串或數組

  • preg_replace($pattern, $replacement, $subject) 返回匹配過濾后的字符串或者數組。
  • preg_filter($pattern, $replacement, $subject)返回匹配過濾后的字符串或者數組。

這倆函數,都可以替換字符串,在字符串替換中,倆函數用法完全一致。

這倆函數,不僅可以替換字符串,還可以替換數組!在替換數組的時候,pre_filter會過濾掉沒有匹配到的內容,而pre_replace不會,這就是他倆的唯一區別。

替換數組

  • preg_grep(string $pattern, array $input[, int flags = 0]) 返回匹配模式的數組條目。閹割版本的preg_filter

正則運算符轉義

對一個字符串中的正則表達式的運算符:”. + * ? [ ] ^ $ ( ) { } = ! < > | : -“進行轉義,轉義成非正則表達式的運算符,否則正則表達式會認為其為運算符。

  • preg_quote(string $str[, string $delimiter = null ]) 轉義正則表達式字符串。返回轉義后的字符串。

正則表達式語法

你可以把正則表達式當做一門簡單的語言來看,但是它的語法顯然比一般的計算機語言要簡單一些。

界定符

指定正則表達式的開始和結束,可以當成是計算機語言中的大括號{和}。一般有三種表現方式:

  • 斜杠。例如/[0-9]/。這是最常用的方式,在PHP中,推薦使用這種方式。
  • 井號。例如#[0-9]。
  • 大括號。例如{[0-9]}。在正則表達式中,大括號還有其他作用,所以這種方式不推薦使用。

原子

正則表達式中最小的匹配單位,其實就是字符串中的字符。主要分為兩大類:

可見原子:

肉眼能夠看見的字符。

  • 標點符號。例如:”_ ? . ;,“等等
  • 英文字母數字。例如:”a-z,A-Z,0-9“
  • 漢字、日文、阿拉伯文等其他語言文字
  • 數理化公式符號。例如:”∩ ∪ π Ω “等等
  • 其他可見字符

由于某些字符在正則表達式中屬于特殊字符,那么在書寫這類特殊字符的時候,應該注意要加上反斜杠,例如如果匹配^直接寫/^/肯定不行,如果加上反斜杠,就可以了。^

不可見原子:

肉眼看不到的。

  • 空格。
  • 換行符
  • 回車符
  • 制表符。其實就是按一下鍵盤tab鍵出來的
  • 其他不可見字符

元字符

定義原子的篩選方式,隊員原子進行歸類,簡化正則表達式的書寫。

  • | 匹配兩個或者多個分支選擇。 和計算機語言中的含義是一樣的:或者
  • [] 匹配方括號中的任意一個原子。
  • [^] 配配除方括號之外的任意字符串。
  • . 匹配除之外的任何單個字符。要匹配包括在內的任何字符,請使用象[.]的模式。
  • d 十進制數字,等同于[0-9]
  • D 匹配任意一個非十進制的數字,等同于[^0-9]
  • s 匹配任意一個不可見原子。等同于[fv]
  • S 匹配一個可見原子。等同于[^fv]
  • w 匹配任意數字、字母或下劃線。既[0-9a-zA-Z_]
  • W 匹配任意非數字、字母或下劃線。即[^0-9a-zA-Z_]

量詞

表示某一個原子連續出現的數量。

  • {n} 表示前面的原子恰好出現n次
  • {n,} 表示前面的原子最少出現n次
  • {n,m} 表示前面的原子最少出現n此,最多出現m次
  • * 匹配0次、1次、或者多次。等同于{0,}
  • + 一次或者多次。等同于{1,}
  • ? 0次數或者1次。等同于{0,1}

邊界控制

  • ^ 匹配字符串開始的位置。即”必須以……為開頭”
  • $ 匹配字符串結束的位置。即”必須以……為結尾”

模式單元

將模式單元中的括號及其正則表達式當做是一個原子來看待。

  • () 匹配其中的整體為一個原子。

修正模式

給正則表達式的匹配過程添加一種匹配模式

  • U 加U是懶惰匹配,不加U是默認的貪婪匹配。
  • i 忽略英文字母大小寫。
  • x 忽略空白。(包括空格和按tab鍵輸出的制表符)
  • s 讓元字符.匹配包括換行符在內的所有字符。
  • e preg_replace()在替換字符串中對逆向引用作正常的替換。簡單的說,就是PHP會把replace的結果當做PHP代碼。(替換字符串要符合php的語法規范)
  • 例如:echo preg_replace('/(d+),(d+)/e', '$1+$2', '2,3');會輸出5。

書寫方式為:

$pattern = '/hello World/U'

$pattern = '/hello World/i'

$pattern = '/hello World/Ui'//可以任意組合

總結

以上是生活随笔為你收集整理的java 正则匹配括号是否成对_十分钟学会正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。