"?:"在正則表達式中什么意思
3 回答

呼喚遠方
TA貢獻1856條經驗 獲得超11個贊
?:”非獲取匹配,匹配冒號后的內容但不獲取匹配結果,不進行存儲供以后使用。
單獨的“?”:匹配前面的子表達式零次或一次。
當“?”緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少地匹配所搜索的字符串,而默認的貪婪模式則盡可能多地匹配所搜索的字符串。
擴展資料
正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。正則表達式是一種文本模式,模式描述在搜索文本時要匹配的一個或多個字符串。

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
?: 是 不想被捕獲的時候使用 可以提高程序執行速度
比如 ([a-z][0-9])+
這個正則表達式里 ( ) 里面的內容被捕獲了, 反向引用的時候可以用上 。
一般正則替換的時候用的多 像UBB代碼
但是 如果寫成 (?:[a-z][0-9])+
跟上面 正則表達式 整體匹配是一樣的 就是 不會捕獲 ( )里內容了。
也就是不能使用 反向引用
如果還是不太理解, 那就先了解一下 反向引用吧。

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
比如 PHP 手冊里 有個 正則替換的函數 preg_replace 有的列子 $string = 'April 15, 2003'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '${1}1,$3'; echo preg_replace($pattern, $replacement, $string); // 結果顯示 April1,2003 這里就用上了 反響引用 $replacement 里的 ${1} 代表 (\w+) , $3代表 第2個 (\d+) 這個正則表達式 里 一共有 3個 () 也就是 可以 用 $1 $2 $3 調用 3個()里的 內容。 也可以使用 \1 \2 \3 來 代替 $1 $2 $3 都是一樣的 那接下來 如果把 代碼里的 正則表達式 改成下面的 $pattern = '/(?:\w+) (?:\d+), (\d+)/i'; 那 這里 只有 一個 () 里的 內容 能使用 帶 ?:的 ()里面內容是不會被 捕獲的 ,所以 只能使用 $1 代表最后的 (\d+)
- 3 回答
- 0 關注
- 930 瀏覽
添加回答
舉報
0/150
提交
取消