正規表示式的或匹配 和 優先匹配

2021-08-20 06:52:38 字數 804 閱讀 6692

前言: 在做演算法題中, 關於字串, 總是習慣於用正規表示式去處理。其中就有乙個題目要求是匹配11, 1, 2。並對他們進行不同的替換。於是就有了這篇雜記。 本文主要是關於replace函式 ; 正規表示式中的 和 |的講解。 如果看官有興趣,請繼續往下看。

看到該題, 第一反應寫下的**如下:

let str = "1111111111111111111112"

//正規表示式

let reg = /[11 1 2]/g

//使用replace函式

str.replace(reg, function(match))

在以上**中, 你會發現永遠都不會 匹配到11, 只會匹配1 和2。想了想在正規表示式中方括號中的元素, 沒有優先順序, 所以有1就會匹配1, 11就永遠被1攔截了。

那麼怎麼辦才能把11的優先順序提到1的前面呢?

思來想去, 終於想起 「|」 這個或操作符。 首先, | 和相同的是,都是或操作符, 都多匹配。我想, 肯定有不同的地方, 於是大膽的測試, 第一版的問題終於解決的了。 |會先匹配放在前面的元素。

(這裡有乙個問題, 是之前為沒有理解清楚的原因造成的, 那就是[11 1 2]匹配的是1和空格還有2三個字元)

let str = "1111111111111111111112"

//正規表示式

let reg = /11|1|2/g

//使用replace函式

str.replace(reg, function(match))

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...