正则表达式中的或与

默认的多选分支『(…|…)』使用的括号是会捕获文本的,也就是说,括号内的表达式真正匹配成功的文本会记录下来,匹配完成之后可以提取出来,具体到上面的例子,就是我们有办法在匹配完成后“提取”出u或har或onduc或our。但许多时候,我们需要的只是整个表达式的匹配,而不关心“匹配时到底选择的哪种可能情况”,在这种情况下,我们稍加修改,使用“不捕获文本的括号”,可以提高效率。不捕获文本的写法也很简单,只是在开扩号之后加上字符『?:』,也就是『(?:…|…)』,具体到上面的例子,就应该写成『c(?:u|har|onduc|our)t』。这样做虽然繁琐点,但效率有保障,阅读起来也不困难,我推荐养成这种习惯,只要用到了括号,就想想是否真的要捕获括号内表达式匹配的文本,如果不需要,就是用不捕获文本的括号。

时间: 2024-11-05 11:45:00

正则表达式中的或与的相关文章

python 正则表达式中反斜杠(\)的麻烦和陷阱

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

正则表达式中原子的5种类型

原子是正则表达式的最基本的组成单位,而且在每个模式中最少包含一个原子.原子是由所有那些未显示指定为元字符的打印和非打印字符组成,所以在这里将其详细划分为五类进行介绍. ①普通字符作为原子 普通字符是编写正则表达式时最常见的原子了,包括所有的大写和小写字母字符.所有数字等.例如,a——z.A——Z.0——9. ’/5/’        –用于匹配字符串中是否有5这个字符出现 ’/php/’      –用于匹配字符串中是否有PHP字符串出现 ②一些特殊字符和元字符作为原子 任何一个符号都可以作为原

python 正则表达式中反斜杠(\)的麻烦和陷阱 (转)

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

backreference Oracle正则表达式中的反向引用

这是Oracle对正则表达式的backreference的描述 从定义中可以看到,当匹配表达式中已()的形式将一个子串包含起来,后面就可以以\?的形式来引用.\1对应第一个(),\2对应第二个... 反向引用的引入使得正则表达式的匹配功能变得更加强大,介绍两个在oracle正则函数中的应用 regexp_like regexp_like('1211233','^([0-9])(\d)\1\1\2(\d)\3$') 上面这个例子中,匹配表达式里,\1表示第一个([0-9]),这个表达式要判断字符串

正则表达式中问号等特殊字符的转义

在.NET Framework 开发人员指南 的 字符转义 一节 有这样一段话.除 .$ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配.但是其中并未注明这些字符应该匹配为什么字符.为了方便自己以后查阅,也为了方便网友搜索我就写在这里了.[Sipo] 点的转义:.  ==> \\u002E 美元符号的转义:$  ==> \\u0024 乘方符号的转义:^  ==> \\u005E 左大括号的转义:{  ==> \\u007B 左方括号的转义:[  ==> \\

正则表达式中的符号含义

. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d 匹配数字\b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束[\u4e00-\u9fa5]{2,20} 匹配2-20个汉字* 重复零次或更多次+ 重复一次或更多次? 重复零次或一次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x]

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决

1.express 框架中的app.use是什么作用? 手册上写着是: app.use([path], function)Use the given middleware function, with optional mount path, defaulting to "/". 就是引入一个所谓的中间件,其实就是用来再实际请求发生之前hack req和res对象来实现一些功能,比如果最简单的logger就是在res的end事件上添加监听写入一条日志记录,express使用connec

计算机程序的思维逻辑 (89) - 正则表达式 (中)

上节介绍了正则表达式的语法,本节介绍相关的Java API. 正则表达式相关的类位于包java.util.regex下,有两个主要的类,一个是Pattern,另一个是Matcher.Pattern表示正则表达式对象,它与要处理的具体字符串无关.Matcher表示一个匹配,它将正则表达式应用于一个具体字符串,通过它对字符串进行处理. 字符串类String也是一个重要的类,我们在29节专门介绍过String,其中提到,它有一些方法,接受的参数不是普通的字符串,而是正则表达式.此外,正则表达式在Jav

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决 时间:2017-05-23 00:18:43      阅读:16      评论:0      收藏:0      [点我收藏+] 1.express 框架中的app.use是什么作用? 手册上写着是: app.use([path], function)Use the given middleware function, with optional mount path, defaulting to

正则表达式中的特殊字符

正则表达式中的特殊字符 \ 在字面意义和特殊意义之间进行切换.例如\w 表示\w 的特殊意义(见下面的解释)而不是字面值w,但是\$表示不使用$的特殊意义(见下面的解释)而是使用$字符本身^ 字符串的开头$ 字符串的结尾* 零次或多次+ 一次或多次? 零次或一次. 除换行符外的任何字符\b 单词边界\B 非单词边界\d 0-9 的任何数字(与[0-9]相同)\D 任何非数字\f 换页符(form feed)\n 换行符 \r 回车符\s 任何一个空白字符(与[ \f\n\r\t\v]相同)\S