浅析正则表达式

所谓的正则表达式,就是用一类元字符(不表示本身意义,而表示统配或其他意义),组

合其他字符所编数出来的,能够匹配符合条件的字符。
  正则表达式有基本正则表达式和扩展正则表达式两大类,
  下面给大家介绍一下基本正则表达式和扩展正则表达式的一些常用的字符,

基本正则表达式:

^        锚定行首的符合条件的内容
  $        锚定行尾的符合条件的内容
  ^$       表示空白行
  .        匹配任意单个字符
  *        匹配进挨在其前面的字符任意次
  .*       匹配任意长度的任意字符
  []       匹配指定范围内的任意字符
  [^]      匹配指定范围外的任意字符
  \?       匹配紧挨在其前面的字0次或1次
  \{m,n\}  匹配其前面的字符至少m次,至多n次
  \{0,n\}  匹配其前面的字符0-n次
  \{m,\}   匹配其前面的字符至少m次
  \{m\}    精确匹配m次
  \<       锚定词首
  \>       锚定词尾
  \(\)     分组

grep的常用选项

--color=auto   自动为匹配字符添加颜色
  -v             反向选取,只显示不符合模式的行
  -o             只显示被模式匹配但的字符串,而不是整个行
  -i             不区分字符大小写
  -A  n          显示匹配到的行时,顺便显示其后面的n个行
  -B  n          显示前面的n行
  -C  n          显示后面的n行
  -E             使用扩展的正则表达式    grep -E = egrep

扩展正则表达式(在这里至列出不同之处)

?            出现了0次或1次 正则表达式为\?
   {m,n}         匹配前边字符最少m次,最多n次
   ()            分组,用法与grep类似
   a|b           二选一

1,锚定/etc/passwd文件中行首为root的行
     grep  “^root” /etc/passwd
2,锚定/etc/passwd文件行尾为sh的行
     grep “sh$” /etc/passwd
3,查找空白行
     grep “^$” /etc/passwd
4,匹配a后面跟了任意单个字符的行
     grep “a.” /etc/passwd
5,匹配a后面跟了任意长度字符的行
     grep “a*” /etc/passwd
4,匹配a后面跟了任意长度的任意字符,再跟上b的行
     grep “a.*b” /etc/passwd
5,匹配a后面跟了任意个一数字后又跟了任意一个字母的行
     grep “a[0-9][a-zA-Z]” /etc/passwd
6,匹配a后面跟了任意一个数字或字母的行
     grep “a[0-9a-zA-Z]” /etc/passwd
7,匹配0或1个a后面跟了个b的行
     grep “a\?b” /etc/passwd
8,匹配最少一个a,最多3个a后面跟了一个b的行
     grep “a\{1,3\}b” /etc/passwd
9,锚定单词admin的行
     grep “\<admin\>” /etc/passwd
10,匹配自少出现一次ad,最多出现3次ad的行
     grep “\(ab\)\{1,3\}” /etc/passwd

时间: 2013-09-19

如何实现正则表达式的JavaScript的代码高亮

今天想改一下JS的高亮的配色,憋了一下午憋出了这个这个正则表达式. 下面这老长老长了的玩意儿是个正则表达式,看到了别吓坏了. 复制代码 代码如下: /(\/\/.*|\/\*[\S\s]+?\*\/)|((["'])(?:\\.|[^\\\n])*?\3)|\b(break|continue|do|for|in|function|if|else|return|switch|this|throw|try|catch|finally|var|while|with|case|new|typeof|in

几个小例子教你如何实现正则表达式highlight高亮

程序员在编写代码的时候少不了和字符串以及"查询"打交道,两者的交集中有一个叫做正则表达式的的东西,这家伙用好了可以提高编程效率,用不好的话...你可以先去好好学一学. 关于正则的使用,举个简单的例子: 复制代码 代码如下: var m = location.href.match(/(\w+:)\/{0,3}([^\/]+)(?:(\/[^\?#]*))?(?:(\?[^#]+|.+))?(?:(#.*))?/);var res = {    protocol: m[1],    hos

PHP函数preg_match_all正则表达式的基本使用详细解析

了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明. preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果. 实例代码: 复制代码 代码如下: $html = '<div id="biuuu">jb51.net</div><div id="

C语言中的内联函数(inline)与宏定义(#define)详细解析

先简明扼要,说下关键:1.内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快. 2.内联函数可以调试,而宏定义是不可以调试的.内联函数与宏本质上是两个不同的概念如果程序编写者对于既要求快速,又要求可读的情况下,则应该将函数冠以inline.下面详细介绍一下探讨一下内联函数与宏定义. 一.内联函数是什么?内联函数是代码被插入到调用者代码处的函数.如同 #define 宏(但并不等同,原因见下文),内联函数通过避免被调用的开销来提

C语言main函数的参数及其返回值详细解析

返回值的作用 main函数的返回值用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出.下面我们在winxp环境下做一个小实验.首先编译下面的程序:int main( void ){    return 0;}然后打开附件里的"命令提示符",在命令行里运行刚才编译好的可执行文件,然后输入"echo%ERRORLEVEL%",回车,就可以看到程序的返回值为0.假设刚才编译好的文件是a.exe,如果输入&

javascript中基于replace函数的正则表达式语法

示例代码如下: var strM = "javascript is a good script language"; //在此我想将字母a替换成字母A alert(strM.replace("a","A")); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 它只替换了首字母.但如果加上正则表达式结果就不一样了!replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换! 注意:被替换的部分不用加双引号

PowerShell函数使用正则表达式验证输入参数实例

本文介绍在自定义PowerShell函数时,输入的参数是否合法可以通过正则表达式来进行约束.正则表达式来约束输入参数,将使用ValidatePattern指令. 之前我们通过ValidateSet来作为参数的智能提示,其实它也起到了对参数输入合规性的检查.因为ValidateSet是规定了一个输入参数的范围,不在这个范围内的参数,一是不能智能提示,另外,即便是输入了,它也无法通过函数的输入参数合规性检查,从而程序无法继续执行. 那么既然ValidateSet是以一个集合的形式来检查输入参数,那么

Es6 Generator函数详细解析

ECMAScript 6 (简称 ES6 )作为下一代 JavaScript 语言,将 JavaScript 异步编程带入了一个全新的阶段. Generator函数跟普通函数的写法有非常大的区别: 一是,function关键字与函数名之间有一个星号: 二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是"产出"). 本文重点给大家介绍Es6 Generator函数,具体内容如下所示: /* 一.generator函数的定义 1.Generator 函数是

Python编程快速上手——strip()函数的正则表达式实现方法分析

本文实例讲述了Python strip()函数的正则表达式实现方法.分享给大家供大家参考,具体如下: 题目如下: 写一个函数,它接受一个字符串,做的事情和strip()字符串方法一样.如果只传入要去除的字符串(原字符串),没有其他参数,那么就从该字符串首尾去除空白字符串.否则,函数第二个参数指定的字符串将从该字符串中去除 思路如下: 补充:字符串的str.strip()方法,去除字符串首尾指定的字符,只能去除头尾两边,不能去除中间 程序需要做以下的事情: 接受一个字符串和要去除的字符 调用函数去

log4j使用详细解析

简单的说log4j就是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地.日志信息的输出格式 Log4j 除了可以记录程序运行日志信息外还有一重要的功能就是用来显示调试信息. 程序员经常会遇到脱离Java ide环境调试程序的情况,这时大多数人会选择使用System.out.println语句输出某个变量值的方法进行调试.这样会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了就只

提高PHP性能的编码技巧以及性能优化详细解析

0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号). 1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id'] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:

Mysql中复制详细解析

1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步.复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves).主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器.从服务器在日志中读取的最后一次成功更新的位置.从服务器接受从那时起发