我个人认为,正则表达式的常规用法可以分为如下三个最基本的原则:1.找谁.2.怎么找.3.找它干什么. 接下来,我分享一下一个正则表达式分三个部分: 原子字符 . 匹配除换行符以外的任意字符 \w 匹配一个字母或数字或下划线 \s 匹配一个空白符 \d 匹配一个数字 \b 匹配单词的开始或结束的位置(匹配一个位置) ^ 匹配字符串的开始 $ 匹配字符串的结束 表示范围 [] 匹配括号中的任意一个字符 量词 重复0次或更多次 重复1次或更多次 ? 重复0次或1次 {n} 重复n次 {n,} 重复n次…
正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 •替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 •根据模式匹配从字符串中提取一个子字符串.可以用来在文本或输入字段中查找特定文字 正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串…
正则引擎的分类 正则引擎的分类 正则引擎的分类主要分两种: DFA:egrep.awk.lex.flex NFA:.NET.PHP.Perl.Ruby.Python.GNU Emacs.ed.sec.vi.grep等 NFA的历史比DFA久一点,但两种引擎都发展了20多年,产生了很多变体,POSIX的出现就是为了规范这种现象.POSIX不但规定了元字符的特性,而且规定了正则表达式应该用什么样的方式运作. DFA符合POSIX的标准,但NFA如果要符合POSIX标准,就要作出相应的修改 所以引擎可…
2014年8月17日下午4点-7点,第三期"晋IT"分享成长沙龙在太原大自然蒙特梭利幼儿园多功能厅成功举办. 8月17日下午两点.小编领先来到场地,提前探訪一下准备情况. "晋IT"分享成长沙龙举办地:太原大自然蒙特梭利幼儿园,位于体育路长风街交叉口附近,途经该地点的公交有:824.849.51.877.840.812等. 详细在地图上的位置见下图: 天宫不作美,已经准备飘起小雨,小编按着宣传内容找到了这块宝地.顺着楼梯走上去.走近看见门上的一个不起眼的指示单. w…
1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”: NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; BOOL…
原文:http://www.infoq.com/cn/news/2011/04/regular-expressions-4 我们使用正则表达式,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的目的.要解决真正的问题,就必须有解决问题的思路,正则表达式的功能,说到底,可以归纳为三种逻辑,为了表述方便,我们分别称为与.或.非. 逻辑关系 说明 与 在某个位置,某些元素(字符.字符组或者子表达式)必须出现 或 在某个位置,某个元素或许不出现,或许不出现,或许长度不固定:要出现的,是某几个元素中…
假设待处理的字符串是  xfooxxxxxxfoo 模式.*foo (贪婪模式): 模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型). 匹配开始时,吃入所有字符xfooxxxxxx去匹配子模式p1.匹配成功,但这样以来就没有了字符串去匹配子模式p2.本轮匹配失败:第二轮:减少p1部分的匹配量,吐出最后一个字符, 把字符串分割成xfooxxxxxxfo和o两个子字符串s1和s2. s1匹配p1, 但s2不匹配p2.本轮匹配失败:第三轮,再次…
一.正则表达式的创建 JS正则的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 varregObj =newRegExp("(^\s+)|(\s+$)","g");   //使用直接字面量创建 varregStr = /(^\s+)|(\s+$)/g; g 全文匹配,而非发现第一个匹配项时立即停止: i 忽略大小写 m 多行匹配, 多个条件同时使用时,写成:gmi 二.().[].{} 的区别 () 提取匹配的字符串.表达…
一.同步调用 1.同步调用会按照代码顺序来执行2.同步调用会阻塞线程,如果是要调用一项繁重的工作(如大量IO操作),可能会让程序停顿很长时间,造成糟糕的用户体验,这时候异步调用就很有必要了. 举个栗子: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threadin…
在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式.无论是那种定义正则表达式的方式,它们都会返回RegExp对象. 普通方式定义正则表达式的格式 语法: var 变量名 = /正则表达式/附加参数 1 附加参数是用来扩展表达式含义的,目前有三种附加参数.分别是: g:表达式进行全局匹配i:匹配时不区分英文的大小写m:可以进行多行匹配 其中全局匹配(g)是指,匹配字符串时,直到所有字符串全部查找完成才会停止匹配. 而非全局匹配是指,匹配字符串时,有一处匹配成功或…