我有以下正則運算式可以提取前兩個字母后的所有內容
^[A-Za-z]{2})(\w )($) $2
現在,如果資料不以字母開頭,我想不提取任何內容。
例子:
AA123 -> 123
123 -> ""
這可以通過正則運算式完成嗎?
uj5u.com熱心網友回復:
如果您的正則運算式不匹配,請引入一種替代方法來匹配從字串開頭到結尾的任何一個或多個字符:
^(?:([A-Za-z]{2})(\w )|. )$
請參閱正則運算式演示。詳情:
^- 字串的開始(?:- 容器非捕獲組的開始:([A-Za-z]{2})(\w )- 第 1 組:兩個 ASCII 字母,第 2 組:一個或多個單詞字符|- 或者.- 除換行符以外的一個或多個字符,盡可能多(用于[\w\W]匹配任何字符,包括換行符)
)- 容器非捕獲組結束$- 字串的結尾。
uj5u.com熱心網友回復:
在匹配 2 個大寫字符后,您的模式已捕獲 1 個或多個單詞字符。在$沒有成為一個組,這 $2不應該是在圖案。
^[A-Za-z]{2})(\w )$
請參閱正則運算式演示。
另一種選擇可能是具有條件的模式,僅當組 1 存在時才捕獲組 2 中的資料。
^([A-Z]{2})?(?(1)(\w )|. )$
^字串的開始([A-Z]{2})?在可選組 1 中捕獲 2 個大寫字符(?有條件的(1)(\w )如果我們有第 1 組,則在第 2 組中捕獲 1 個單詞字符|或者.將整行與至少 1 個字符匹配以不匹配空字串
)關閉條件$字串結束
正則運算式演示
對于僅匹配,您可以使用其他變體 使用\K像^[A-Za-z]{2}\K\w $或帶有后視斷言(?<=^[A-Za-z]{2})\ w $
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334562.html
標籤:正则表达式
上一篇:從捕獲組中排除正向前瞻
