博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式 非捕获性分组
阅读量:5069 次
发布时间:2019-06-12

本文共 1648 字,大约阅读时间需要 5 分钟。

非捕获性分组语法为(?:pattern),即将pattern部分组合成一个可统一操作的组合项,但不把这部分内容当作子匹配捕获,匹配的内容部进行编号也不存储在缓冲区中供以后使用。非捕获性分组方法在必须进行组合、但又不想对组合的部分进行缓存的情况下非常有用。

例如,要在一篇英文资料中查找"program"和"project"两个单词,正则表达式可表示为/program|project/,也可表示为/pro(gram|ject)/,但是缓存子匹配(gramject)没有意义,就可以用/pro(?:gram|ject)/进行非捕获性匹配这样既可以简洁匹配又可不缓存无实际意义的字匹配。
实例:
<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成功匹配
-----------------------------------------------------------------------------------------------------------------
实例:
<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成功匹配
-----------------------------------------------------------------------------------------------------------------
实例:
<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成功匹配

转载于:https://www.cnblogs.com/yangyang63963/p/5692992.html

你可能感兴趣的文章
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
我们失去了,我们又没有失去什么
查看>>
Node.js——require加载规则
查看>>
前端模块管理器简介
查看>>
maven 国内镜像
查看>>