2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

說明:正則表達式

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋
Commons-emblem-notice.svg
這個頁面「Help:正則表達式」是萌娘百科的幫助文檔
  • 本文用於介紹萌娘百科中一些特定功能的操作方法;
  • 本文僅是一篇論述,不屬於方針或指引。如果本指南與相關方針或指引發生衝突或存在不一致的情況,請以方針或指引的條文為準。
正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些匹配某個模式的文本。
——維基百科

本文介紹的大部分正則語法,在不同的正則表達式引擎中都可以使用,但也有一些會有所差異。僅會進行基礎性講解,畢竟深層次的也不會來萌百找

如要在萌百使用,見段落在萌百

可利用萌百的默認編輯器在沙盒中測試,或者在正則表達式測試網站(RegExr/Rubular)中測試(推薦)

基本語法

學習正則表達式的最好方法是理解例子後再自己對例子進行修改、實驗。

一個最簡單的匹配例子:ab,在大部分正則工具中,都有忽略大小寫的選項,所以它會匹配abaBAbAB,而在沒有忽略大小寫的匹配中,它僅僅只能匹配ab

不過通過正則表達式中的元字符,它就可以匹配更多...

元字符

綠色表示能匹配,無標色或紅色劃重點表示不能匹配。)

元字符能匹配除其本身之外的更多東西,舉個例子:

  • .匹配換行符(\n)外所有字符,如h.b能匹配

hab
hfb
h
b

這就是一個典型的元字符,其中提到了不能匹配的\n,也是一個元字符。

  • \n匹配換行,如uwh\npo能匹配

uwh
po

uwhpo

你也可以嘗試以下這些常用的元字符來深入了解正則:

  • \w匹配字母不分大小寫、數字或下劃線[1],如\wu\wb\w能匹配

au_b4
_uhb5
啊u b不
au bb

也就是說它不能匹配漢字或空格。

  • \d匹配純數字,如yuo\dliu能匹配

yuo7liu
yuo2liu
yuowliu
yuo你liu

  • \s:匹配空白字符(包括 \n \f\r\t\v,其中一些後面會談到),如\s\s能匹配

  
 y


單詞邊界

以下介紹兩個特殊的元字符:

  • ^匹配字符串的開始
  • $匹配字符串的結束,根據概念很難理解,那舉些例子:

642能匹配

4254642
42546424254
6424254
642
145

^642$只能匹配

4254642
42546424254
6424254
642
145

還有些類似的

  • \b\y匹配單詞開始或結束處[2],類似於^$之一。如\b\w5\w會匹配

a5das
4461854274
44424a5a
b5a

  • \m\<單詞的開始處[2]
  • \>單詞的結束處[2],由於能用到這些的一般都不會來看這裡的參考,故不做展示。

以下這些同樣是元字符,但它有了更多的用法...

字符轉義

如果你想查找元字符本身的話,比如你查找.,就出現了問題:你沒辦法找到它們,因為它們會被解釋未元字符的意義。這時你就得使用

  • \來取消這些字符的特殊意義。如\\匹配

\d

重複

你是不是感覺\w\w\w\w太累贅了,那就使用以下元字符吧:

  • *重複零次或更多次
  • +重複一次或更多次
  • ?重複零次或一次,不懂?邊講邊練練。

啊5*啊,匹不匹配5或多個都一樣:

啊5啊
啊5555555555555啊
啊啊
啊6啊

同一個例子,換成啊5+啊就不一樣了:

啊5啊
啊5555555555555啊
啊啊
啊6啊

還是同一個例子,換成啊5?啊又雙叒叕不一樣了:

啊5啊
啊5555555555555啊
啊啊
啊6啊

看明白例子了嗎?其實很簡單的。明白了後還有另一類重複方式:

  • {n}重複n次,可以看做一個數的集合;
  • {n,}重複n次或更多次,類似區間$[n,+∞)$(當然學校沒學到就往下看)
  • {n,m}重複n到m次,類似區間$[n,m]$。

啊5{1}啊只能匹配到1個5

啊5啊
啊5555555555555啊
啊啊
啊6啊

啊5{1,}啊能匹配到大於等於1個5

啊5啊
啊5555555555555啊
啊啊
啊6啊

同理,啊5{0,}啊能匹配到大於等於0個5

啊5啊
啊5555555555555啊
啊啊
啊6啊

啊5{0,1}啊能匹配到大於等於0個、小於等於1個5

啊5啊
啊5555555555555啊
啊啊
啊6啊

字符類

如果你想匹配沒有預定義元字符的字符集合...

  • [xyz]字符集合,匹配所包含的任意一個字符,如,你想找字母「a」、數字「6」、漢字「貓」和符號「?」,就可以用[a6猫?]

a468448d
so6
噬元獸是
是嗎?

嫌寫太多?可以這樣簡寫一點:

  • [a-z]字符範圍,匹配指定範圍內的任意字符,如果想找「f」到「p」的英文字母,就可以用[f-p]

ab14cb4gq
454awahaas
f
**k

當然,你可以同時使用,如[. a-c1-4]

7588746568
eyhtr.ghyuy
iyreh poijlio
人設就誒聽b額皮膚

同時,\uXXXX也是能指定範圍,如[\u4e00-\uf9a5]+

可以匹配所有中文字符

其實,\w相當於[A-Za-z0-9_]\d相當於[0-9]\s相當於[  \f\n\r\t\v]

用上面的例子,[A-Za-z0-9_]u[A-Za-z0-9_]b[A-Za-z0-9_]也能匹配

au_b4
_uhb5
啊u b不
au bb

(點擊展開了解更多方括號表達式)

上面舉例的這些其實都是方括號表達式,方括號表達式定義了一個字符序列,所以它的操作可以非常複雜

  • 併集,方括號表達式可以像集合那樣操作,所以,你想要匹配兩個方括號表達式的併集,可以這樣做:[0-3[6-9]],可以匹配[3]

7
2
5

  • [:name:]匹配ASCII字符組name[4],增加命名字符類(named character class)[5]中的字符到表達式
  • [=elt=]增加當前locale下排序(collate)等價於字符「elt」的元素
  • [.elt.]增加排序元素(collation element)elt到表達式中

有時候,我們想找的不屬於某個能簡單定義的字符類的字符怎麼辦呢?

反義

  • [^x]匹配除了x以外的字符,如[^a-zA-Z]+能匹配

adsasafsa4245%(#*&42adfsaf
uyhkuyhk按發@)$*放shrgs

  • \D匹配一個非數字字符,等價於[^\d][^0-9],如\D+能匹配

720720adfs)(#%*af428738393
75085720按@$()*發放4542354

  • \W匹配非字母不分大小寫、數字或下劃線[1][^\w],如\W+\w+\W+能匹配

72__OHSF)fhf(#%*4afaf73ADA93
75afva720按@$(452)*發放4542354

  • \S匹配非空白符的字符,等價於[^\s],而[\S\s]+就能匹配全文

4eaohfoUIDAGUI648
sfukhkuse)$@*(&@4)sofeho   adda
)()*&¥@)()@¥*58

  • \B\Y非單詞開始或結束處[2]
  • \W單詞的結束處[2]
  • 差集,如果匹配差集,實質上就是減操作,如[a-z&&[^m-r]]可以匹配

c
z
o

如果想查找多次,那我們有什麼簡便方法嗎?

分枝條件

  • x|y有x條件和y條件,滿足其中任意一種條件都能匹配,對整個正則表達式生效,如abc|123可以匹配

gkytgkc79876
seydut276877687

有了這個,我們可以將多次查詢綜合成一次查詢,如新曲|知名度|歌姫|涙可以匹配

謎(知名度的な意味で)のP集団によって
奇跡の新曲が生み出されようとしている。
われらの歌姫が名作絵本のコンセプトをもとに歌い上げる、
感動巨編一大スペクタクル
止まらぬ・そして謎の物体
スイミーとは…オランダ出身の絵本作家レオ・レオニ (Leo Lionni) 作の名作絵本。
他の仲間と違い一匹だけ真っ黒な小魚・スイミーが、仲間たちと協力し合って
自分の何十倍もの大きさの魚に立ち向かう、勇気と友情の物語。

有人說,想用<div>.+</div>匹配<div><div></div></div>中內層div,卻把全文匹配了,為什麼?因為
你呀,真是勤勉呢!アナタ、勤勉ですねぇ!

貪婪之罪和怠惰之罪

  • *?重複任意次,但儘可能少重複
  • +?重複1次或更多次,但儘可能少重複
  • ??重複0次或1次,但儘可能少重複
  • {n,m}?重複n到m次,但儘可能少重複
  • {n,}?重複n次以上,但儘可能少重複

通過一段話和b[ab]*b來區分不同的效果

bbbabaabaabaaabaaaab

沒有?,它會一次匹配完b[ab]*b

bbbabaabaabaaabaaaab

有了?,它四次才匹配完b[ab]*?b

bb
babaa
baabaaa
baaaab

這時候有人說了,哎呀你這個|在有相同內容時總是要重複寫...

分組語法

  • (abc)將小括號內的內容視為一個整體,並捕獲文本到自動命名組「x」里
  • (?:abc)非捕獲組,內容不會被捕獲,也不會占用捕獲組的序號,僅用於條件判斷。
  • a(?:x|y)c分枝條件僅對小括號內生效

沒學這個之前,寫累贅的寫成絶対絶対絶対絶対絶対|僕は絶対|そして絶対,現在,寫成((?:絶対){4}|僕は|そして)絶対也能達到同樣效果

僕は絶対
絶対絶対絶対絶対絶対
何者にもなれず
繰り返してく街の中で窒息する
そして絶対
絶対絶対絶対絶対

Unicode、POSIX

Unicode、POSIX
Unicode處理
Unicode Property:
字符屬於標點、空格、字母等等,每個Unicode字符只能屬於唯一Unicode Property。
字符\p{L} \p{Ll}\p{Lowercase_Letter} 小寫字符(必須有大寫的形式)
\p{Lu}\p{Uppercase_Letter} 大寫字符(必須有小寫的形式)
\p{Lt}\p{Titlecase_Letter} 全詞首字母大寫的字符
\p{L&}\p{Cased_Letter} 存在大小寫形式的字符
\p{Lm}\p{Modifier_Letter} 音標修飾字符
\p{Lo}\p{Other_Letter} 不具有大小寫的字符或字形
附加符號\p{M} \p{Mn}\p{Non_Spacing_Mark} 與其他字符結合,不額外占用空間的字符
\p{Mc}\p{Spacing_Combining_Mark} 與其他字符結合,額外占用空間的字符
\p{Me}\p{Enclosing_Mark} 包含其他字符的字符
分隔符\p{Z} \p{Zs}\p{Space_Separator} 不可見的空格,但占據空間
\p{Zl}\p{Line_Separator} 分隔線字符U+2028
\p{Zp}\p{Paragraph_Separator} 分段字符U+2029
符號\p{S} \p{Sm}\p{Math_Symbol} 數學符號
\p{Sc}\p{Currency_Symbol} 通貨符號
\p{Sk}\p{Modifier_Symbol} 組合為其他字符的符號
\p{So}\p{Other_Symbol} 其他符號
數值字符\p{N} \p{Nd}\p{Decimal_Digit_Number} 所有文本中的數字0至9字符,不含形意符號
\p{Nl}\p{Letter_Number} 看起來像字母的符號,包含羅馬數字
\p{No}\p{Other_Number} 上角標或下角標數字,或者其他不屬於0至9的數字,不含形意符號
標點符號\p{P} \p{Pd}\p{Dash_Punctuation} 任何種類的連字號或連接號
\p{Ps}\p{Open_Punctuation} 任何種類開括號
\p{Pe}\p{Close_Punctuation} 任何種類閉括號
\p{Pi}\p{Initial_Punctuation} 任何種類開引號
\p{Pf}\p{Final_Punctuation} 任何種類閉引號
\p{Pc}\p{Connector_Punctuation} 連接詞的標點符號
\p{Po}\p{Other_Punctuation} 其他標點符號
其它符號\p{C}(包括不可見控制字符與未用碼位) \p{Cc}\p{Control} ASCII或Latin-1控制字符0x00-0x1F0x7F-0x9F
\p{Cf}\p{Format} 不可見的格式化指示字符
\p{Co}\p{Private_Use} 私用碼位
\p{Cs}\p{Surrogate} UTF-16編碼的代理對的一半
\p{Cn}\p{Unassigned} 未被使用的碼位
Unicode Block:按照編碼區間劃分Unicode字符,每個Unicode Block中的字符編碼屬於一個編碼區間 Unicode Script:按照字符所屬的書寫系統來劃分Unicode字符
POSIX字符組
POSIX字符組 說明 ASCII環境 Unicode環境
[:alnum:] 字母字符和數字字符 [a-zA-Z0-9] [\p{L&}\p{Nd}]
[:alpha:] 字母 [a-zA-Z] \p{L&}
[:ascii:] ASCII字符 [\x00-\x7F] \p{InBasicLatin}
[:blank:] 空格字符和制表符 [ \t] [\p{Zs}\t]
[:cntrl:] 控制字符 [\x00-\x1F\x7F] \p{Cc}
[:digit:] 數字字符 [0-9] \p{Nd}
[:graph:] 空白字符之外的字符 [\x21-\x7E] [^\p{Z}\p{C}]
[:lower:] 小寫字母字符 [a-z] \p{Ll}
[:print:] 類似[:graph:],但包括空白字符 [\x20-\x7E] \P{C}
[:punct:] 標點符號 [][!"#$%&'()*+,./:;<=>?@\^_`{|}~-] [\p{P}\p{S}]
[:space:] 空白字符 [ \t\r\n\v\f] [\p{Z}\t\r\n\v\f]
[:upper:] 大寫字母字符 [A-Z] \p{Lu}
[:word:] 字母字符 [A-Za-z0-9_] [\p{L}\p{N}\p{Pc}]
[:xdigit:] 十六進制字符 [A-Fa-f0-9] [A-Fa-f0-9]

其它

正則表達式引擎/規範特性對比表
字符
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\ 轉義單個元字符
\Q...\E 轉義多個元字符 Java 6
\x00 ~ \xFF (ASCII 字符)
\n (換行), \r (回車), \t (制表)
\f (換頁), \v (豎直制表)
\a (響鈴)
\e (轉義)
\b (退格), \B (反斜槓, \)
\cA ~ \cZ (控制字符)
\ca ~ \cz (控制字符)
字符類/字符集 [abc]
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
[abc] 字符類
[^abc] 反義字符類
[a-z] 字符類範圍
[\d-z] 中的 - 視為字面量
[a-\d] 中的 - 視為字面量
\ 轉義單個字符類元字符
\Q...\E 轉義多個字符類元字符 Java 6
\d 代表數字 ASCII ASCII ASCII 需配置 ASCII
\w 代表單詞字符 ASCII ASCII ASCII 需配置 ASCII
\s 代表空白字符 ASCII ASCII 需配置 ASCII ASCII ASCII
\D\W\S 代表反義字符類
[\b] 匹配反斜槓 (\)
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
. 匹配換行符 (\n) 外所有字符
錨點
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
^ 字符串/行開始
$ 字符串/行結束
\A 字符串開始
\Z 字符串結束,最後一個 \n
\z 字符串結束 \Z
\` 字符串開始
\' 字符串結束
單詞邊界
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\b 單詞的開始或結束處 ASCII ASCII 需配置 ASCII
\B 不是單詞的開始處或結束處 ASCII ASCII 需配置 ASCII
\y 單詞的開始或結束處
\Y 不是單詞的開始處或結束處
\m 單詞的開始處
\M 單詞的結束處
\< 單詞的開始處
\> 單詞的結束處
分支條件
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
| 分支條件 \|
量詞
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
? 0 ~ 1 次 \?
* 0 次或更多次
+ 1 次或更多次 \+
{n} n 次 \{n\} \{n\}
{n,m} n ~ m 次 \{n,m\} \{n,m\}
{n,} n 次或更多次 \{n,\} \{n,\}
量詞後加 ? 轉為懶惰模式
分組與後向引用
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(regex) 編號捕獲組 \( \) \( \)
(?:regex) 非捕獲組
\1 ~ \9 後向引用
\10 ~ \99 後向引用 N/A N/A
前向引用 \1 ~ \9 N/A N/A
嵌套引用 \1 ~ \9 N/A N/A
後向引用不存在的組報錯 N/A N/A
後向引用匹配失敗的組失敗 N/A N/A
修飾器
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?i) 忽略大小寫 僅限 /i flag
(?s) 點 (.) 可匹配\n (?m) flag
(?m) 行開始/結束可匹配 ^ / $ 僅限 /m always on flag
(?x) 忽略空白模式 flag
(?n) 顯式匹配
(?-ismxn) 關閉模式修飾器
(?ismxn:group) 模式修飾器僅應用於本組
原子組與占位量詞(possessive quantifiers)
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?>regex) 原子組
?+*+++{m,n}+ 占位量詞
斷言
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?=regex) 正預測先行斷言
(?!regex) 負預測先行斷言
(?<=text) 正回顧後發斷言 整個表達式 整個表達式 有限長度 固定長度 可變固定長度 固定長度
(?<!text) 負回顧後發斷言 整個表達式 整個表達式 有限長度 固定長度 可變固定長度 固定長度
從上個匹配繼續
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\G 匹配嘗試的開始
條件
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?(?=regex)then|else) 使用任意斷言
(?(regex)then|else)
(?(1)then|else)
(?(group)then|else)
注釋
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?#comment)
忽略空白
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
支持忽略空白語法
字符類作為整體 N/A N/A N/A N/A N/A N/A
# 開啟注釋 N/A N/A N/A N/A N/A N/A
Unicode 字符
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\X Unicode 字素 需配置
\u0000 ~ \uFFFF (Unicode 字符) u"string"
\x{0} ~ \x{FFFF} (Unicode 字符) 需配置
Unicode 屬性、腳本與區塊
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\pL ~ \pC (Unicode 屬性) 需配置
\p{L} ~ \p{C} (Unicode 屬性) 需配置
\p{Lu} ~ \p{Cn} (Unicode 屬性) 需配置
\p{L&}\p{Letter&} 等同於 [\p{Lu}\p{Ll}\p{Lt}] Unicode 屬性 需配置
\p{IsL} ~ \p{IsC} (Unicode 屬性)
\p{IsLu} ~ \p{IsCn} (Unicode 屬性)
\p{Letter} ~ \p{Other} (Unicode 屬性)
\p{Lowercase_Letter} ~ \p{Not_Assigned} (Unicode 屬性)
\p{IsLetter} ~ \p{IsOther} (Unicode 屬性)
\p{IsLowercase_Letter} ~ \p{IsNot_Assigned} (Unicode 屬性)
\p{Arabic} ~ \p{Yi} (Unicode 腳本) 需配置
\p{IsArabic} ~ \p{IsYi} (Unicode 腳本)
\p{BasicLatin} ~ \p{Specials} (Unicode 區塊)
\p{InBasicLatin} ~ \p{InSpecials} (Unicode 區塊)
\p{IsBasicLatin} ~ \p{IsSpecials} (Unicode 區塊)
上方 {} 中的內容忽略大小寫
上方語法中長名稱允許空格,邊字符,下劃線 (如 BasicLatin 可寫為 Basic-LatinBasic_LatinBasic Latin) Java 5
\P 上方所有 \p 的反義 需配置
\p{^...} 上方所有 \p{...} 的反義 需配置
命名捕獲與後向引用
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
(?<name>regex) .Net 風格的命名捕獲分組
(?'name'regex) .Net 風格的命名捕獲分組
\k<name> .Net 風格的命名後向引用
\k'name' .Net 風格的命名後向引用
(?P<name>regex) Python 風格的命名捕獲分組
(?P=name) Python 風格的命名後向引用
多個捕獲組同名 N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A
XML 字符類
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
\i\I\c\C XML 名稱字符類
[abc-[abc]] 字符類差集 2
POSIX 方括號表達式
特性 JGsoft .NET Java Perl PCRE JS Python Ruby Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE XML XPath
[:alpha:] POSIX 字符類 ASCII
\p{Alpha} POSIX 字符類 ASCII
\p{IsAlpha} POSIX 字符類
[.span-ll.] POSIX 排序序列
[=x=] POSIX 等值字符

註腳點擊展開
  1. 1.0 1.1 有些引擎中\w是可以匹配漢字的,這裡以不匹配漢字作為參考。
  2. 2.0 2.1 2.2 2.3 2.4 ^$\b外的其它單詞邊界在不同引擎中適用性範圍窄,一般不使用。
  3. 其實在大部分引擎中可以這樣寫:[0-36-9]
  4. 取自微軟-正則表達式 2 (re2.h) 語法
  5. 命名字符類。對於C++11的regex_traits::lookup_classname,缺省返回字符類的名字:"alnum", "apha", "blank", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", "xdigit", "d", "s", "w",取自維基百科

在萌百

使用正則表達式編輯

在萌百,你可以在編輯器中使用正則語法進行替換,只需要打開默認編輯器中的「高級」,點擊最右側的圖標,並在彈出的窗口中勾選「使用正則表達式」。

同時各種編輯器,如Wiki+、IPE等也均支持使用正則表達式進行查找的替換。

在模板/頁面中使用正則表達式

萌百有一系列模板可以進行正則表達式的匹配和替換,其中{{regex}}調用了PHP的正則表達式,功能最為強大,而其他模板(如{{Str test}}、{{Str match}}、{{Str replace}}等)則使用的是Lua正則表達式,無法實現部分功能,而且還要占用Lua運行限時。關於這些模板的使用可以直接查看對應模板的文檔,在此不再贅述。

外部鏈接