正则表达式 非捕获性分组
非捕獲性分組語法為(?:pattern),即將pattern部分組合成一個(gè)可統(tǒng)一操作的組合項(xiàng),但不把這部分內(nèi)容當(dāng)作子匹配捕獲,匹配的內(nèi)容部進(jìn)行編號(hào)也不存儲(chǔ)在緩沖區(qū)中供以后使用。非捕獲性分組方法在必須進(jìn)行組合、但又不想對(duì)組合的部分進(jìn)行緩存的情況下非常有用。
例如,要在一篇英文資料中查找"program"和"project"兩個(gè)單詞,正則表達(dá)式可表示為/program|project/,也可表示為/pro(gram|ject)/,但是緩存子匹配(gramject)沒有意義,就可以用/pro(?:gram|ject)/進(jìn)行非捕獲性匹配這樣既可以簡(jiǎn)潔匹配又可不緩存無實(shí)際意義的字匹配。
實(shí)例:
<script type="text/javascript">
<!--
var str = "program,a good project";
var reg = /program|project/g;
var arr = reg.exec(str);
var msg;
if(arr){
????msg = arr+"成功匹配<br>";
}else{
????msg = "匹配失敗<br>";
}
document.write(msg);
arr = reg.exec(str);
if(arr){
????msg = arr+"成功匹配";
}else{
????msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
program成功匹配
project成功匹配
-----------------------------------------------------------------------------------------------------------------
實(shí)例:
<script type="text/javascript">
<!--
var str = "program,a good project";
var reg = /pro(gram|ject)/g;
var arr = reg.exec(str);
var msg;
if(arr){
????msg = arr+"成功匹配<br>";
}else{
????msg = "匹配失敗<br>";
}
document.write(msg);
arr = reg.exec(str);
if(arr){
????msg = arr+"成功匹配";
}else{
????msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
program,gram成功匹配
project,ject成功匹配
-----------------------------------------------------------------------------------------------------------------
實(shí)例:
<script type="text/javascript">
<!--
var str = "program,a good project";
var reg = /pro(?:gram|ject)/g;
var arr = reg.exec(str);
var msg;
if(arr){
????msg = arr+"成功匹配<br>";
}else{
????msg = "匹配失敗<br>";
}
document.write(msg);
arr = reg.exec(str);
if(arr){
????msg = arr+"成功匹配";
}else{
????msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
program成功匹配
project成功匹配
轉(zhuǎn)載于:https://www.cnblogs.com/yangyang63963/p/5692992.html
總結(jié)
以上是生活随笔為你收集整理的正则表达式 非捕获性分组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: leetcode171
- 下一篇: Navicat Premium mys
