如题,我想草率地下一个断言,
但凡是需要机械性重复操作的文本工作,正则表达式十有八九都有施展神技的机会
。
二、正则表达式的应用场景
微信群里收到一条消息,每人需要选择总时长1800分钟的在线课程。鉴于时长加总的繁琐和无谓,这位同学十分温馨地提醒大家可以选择相同的课程。
不过需求各异,选择喜欢的课程才是最重要的,于是出现了这样的局面。
虽然我不知道上图中同学2是如何计算1166分钟的,但是3、4同学在面对时长问题时内心一定有过那么一瞬间——“万马飘过”。
实际上这个问题可以很简单,使用正则表达式,只需1分钟。
要做的,基本也就下面这3个动作:
-
使用正则表达式;
-
使用编辑器的正则匹配查找功能;
-
使用Excel的自动求和功能。
三、正则表达式运用实操
我们一起试一下。
1. 打开上面那个叫《电路原理》的课程页面,进入目录页,如图每一章节都包含时长信息。
2. "Ctrl+A"选中目录页所有内容,"Ctrl+C"复制,"Ctrl+V"粘贴至一个txt文件。
3. 选择一个支持正则表达式的编辑器(市面上大多数编辑器都支持正则,我使用的是Sublime)打开上面的txt文件。
4. “Ctrl+F”打开搜索界面,点选正则匹配模式,输入正则表达式“
\d{2}:\d{2}
”,点击“查找全部”后,文件中所有的时间数据被选中。
5. 此时,“Ctrl+C”复制,在一个空白Excel页面中选中一个单元格“Ctrl+V”粘贴,选中该列,所有的时长被自动求和,
1464分35秒
。
四、简单解释一下
上述实例中的正则表达式“
\d{2}:\d{2}
”,其含义就是匹配
2个数字、1个冒号、2个数字
连续组成的字符串,正好符合课程目录中时长数据的格式。以“正则模式”进行搜索时,编辑器会找到与正则表达式格式相同的字符串,从而可以轻松地将想要的内容提取出来进行处理。
如你所见,正则表达式应用起来是可以爽到飞的。时间关系,更深入的问题暂且不表,留作课后交流或网上自习吧。
不过,千万不要觉得正则是奇技淫巧或小儿科,它是潜力无穷的利器神兵,拥有它、用好它是真的需要花点时间的。
不过,比起那些恶心而又浪费时间的机械性重复劳动,花点时间是既正当又值得的事。
一、前言如题,我想草率地下一个断言,但凡是需要机械性重复操作的文本工作,正则表达式十有八九都有施展神技的机会。二、正则表达式的应用场景微信群里收到一条消息,每人需要选择总时长1800分钟的在线课程。鉴于时长加总的繁琐和无谓,这位同学十分温馨地提醒大家可以选择相同的课程。不过需求各异,选择喜欢的课程才是最重要的,于是出现了这样的局面。虽然我不知道上图中同学2是如何计算1166分钟的,但是3...
rror C2664: “void ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Format(UINT,…)”: 无法将参数 1 从“const char [36]”转换为“const wchar_t *”
还有一点需要读者注意的是,宽字符不等于Unicode,Unicode 是宽字符编码的一种,只不过最常见的宽字符编码方式就是Unicode了,UTF-16和UTF
4. m-n位的数字:^\d{m,n}$
5. 零和非零开头的数字:^(0|[1-9][0-9]*)$
6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
7. 带1-2位小数的正数或负数:^(\-)?\d+(\....
(?: pattern)是非捕获型括号 匹配pattern,但不捕获匹配结果。
(pattern )是捕获型括号。 匹配pattern,匹配pattern并捕获结果,自动获取组号
(? pattern ) 匹配pattern, 匹配pattern并捕获结果,设置name为组名
使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达
英文标点符号比较多,如,(逗号)、。(点号)、?(问号)、:(
冒号
)、;(分号)、‘’(单引号)、!(感叹号)、“”(双引号)、—(连接号)、——(破折号)、……(省略号)、()(小括号)、【】(中括号)、{}(大括号)、(顿号)、《》书名号等。以下
正则表达式
能够验证英文标点符号。
[,。?:;‘’!“”—……、]|(-{2})|(())|(【】)|({})|(《》) (64...
正则表达式
是描述字符模式的对象。
正则表达式
用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
var patt=new RegExp(pattern,modifiers);
pattern(模式) 描述了表达式的模式
modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
var re = new RegExp("\\w+");
var re =