以图明志

开源项目与工具

[专题] 正则入门:匹配单词边界

\bmagic\b
可见,通常情况下,我们只希望匹配 magic ,而不希望匹配 nowamagic 中出现的 magic。正则表达式中,可以在 字符 前加“\b”,来匹配其 后面 的字符位于字符串首位的字符。以后提到 字符,指:单个字符(比如“j”)、字符组(比如“[abcde]”)、特定字符类型(比如“\d”)、转义过的特殊字符“\[” 或者 单个任意字符(即“.”)。

开源项目与工具

[专题] 正则入门:边界的定义与相对性

究竟什么才算边界?
讲了这么多,还漏掉了一个重要的内容:究竟什么才算边界?通常情况下,以 空格、段落首行、段落末尾、逗号、句号 等符号作为边界,值得注意的是,分隔符“-”也可以作为边界。其实很好理解,从“-”的字面意思:分隔符,大致就可以想到了。实际上,在英语中,它是用来做单词分隔的。

开源项目与工具

[专题] 正则入门:匹配非单词边界

匹配不在边界的字符
和 前面 匹配特定类型字符有些相似,有了“\b”,自然有“\B”,它用来匹配不在边界的字符。我们继续拿上面的例子做示范,来看看“\Bmagic”匹配的效果。它的匹配规则是这样的:字符“m”必须出现,但是不能位于字符串首位;随后跟两个固定字符a, g, i, c。

开源项目与工具

[专题] 正则入门:匹配文本首和尾

^开头与结尾$
有的时候,我们想要匹配的字符串必须位于全部文本的首位。在正则表达式中,可以在 匹配模式 的第一个字符前添加 “^”,以匹配 满足模式且位于全部文本之首的字符串。可以将它的匹配方式理解成这样:假设不存在“^”,进行一个正常匹配,将所有匹配的文本保存到匹配集合中。

开源项目与工具

谈谈正则表达式常用的一些技巧

技巧总结
正则表达式在现在web的应用当中,如表单验证,url解析等,应用非常方便,比起普通的字符串解析性能上也高出不少。这里就做一些关于正则表达式通用技巧的个人小总结。头尾的^$即是限定匹配的必须是整个字符串,而不是其中一部分,这对于表单验证里验证完整的合法输入很有用。

开源项目与工具

[专题] 正则入门:子模式

用小括号将模式中的子字符串括起来
在正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。我们可以将匹配过程理解成这样:子模式“(<br\s*\/?>)”首先匹配所有“<br>”、“<br/>”或“<br />”;然后,将每一个匹配结果视为一个整体(相当于单个字符);接着,匹配这个整体连续出现两次或以上的文本。

开源项目与工具

[专题] 正则入门:“或”匹配

reg1|reg2
在正则表达式中,可以使用“|”将一个表达式拆分成两部分“reg1|reg2”,它的意思是: 匹配所有符合表达式 reg1 的文本 或者 符合表达式 reg2 的文本。有的时候,我们要取消某段文字中的加粗、斜体等效果,我们想匹配所有的“<b>”、“</b>”或者 “<i>”、“</i>”,然后把它们替换成空。

开源项目与工具

[专题] 正则入门:后向引用文本替换

替换电话号码格式
正则表达式的三部曲应该是:1、查找;2、引用匹配了的文本(后向引用);3、有选择地替换文本。需要注意的是:大部分语言的正则表达式实现,在查找中,使用后向引用来代表一个子模式,其语法是“\数字”;而在替换中,其语法是“$数字”。

开源项目与工具

[专题] 正则入门:非获取匹配

只进行匹配,不保存结果供以后引用
我们首先查看一下表达式的区别,为了要使用后向引用,我们用“(”和“)”把“[\w.]+\b”包起来,使它成为一个子模式。我们知道,只有这样,才可以用 $1 去引用它,这里,我们发现使用子模式的一个作用:系统会在幕后将所有的子模式保存起来,以供后向引用使用(包含查找时的后向引用 和 替换时的后向引用)。

JavaScript

[专题] 正则总结:JavaScript中的正则表达式

定义、方法与使用
在javascript我们可以通过内建的类来定义一个正则表达式。实际上RegExp类的构造函数可以接受两个参数,除了本身需要匹配的模式字符串外,还可以定义指定额外处理方式的第二个参数。这两种定义方式都是可行的,完全可以根据个人习惯进行选择。

JavaScript

[专题] 正则总结:正则表达式在js中的高级应用

子模式、正反向查找、回溯等
用来指定重复次数的元字符只能作用于紧挨着它的字符或元字符,而在实际应用中我们需要进行重复匹配的字符往往不一定就只是一个字符或元字符,就如reUrl中所要匹配的“http”和“net”就是多个字符,这时候就可以使用(和)将多个字符括起来作为一个独立的元素来使用。

开源项目与工具

高效准确的正则表达式的书写方法

避免误匹配与漏匹配
如果纯粹是为了挑战自己的正则水平,用来实现一些特效(例如使用正则表达式计算质数、解线性方程),效率不是问题;如果所写的正则表达式只是为了满足一两次、几十次的运行,优化与否区别也不太大。但是,如果所写的正则表达式会百万次、千万次地运行,效率就是很大的问题了。

C/C++编程语言

C语言中sizeof与strlen的用法区别

sizeof探测类型,strlen字符串长
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof是运算符(C++ 关键字),strlen是函数。数组做sizeof的参数不退化,传递给strlen就退化为指针了。大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度,这就是sizeof(x)可以用来定义数组维数的原因。

信息安全

PHP网站的一些常见安全措施

网站安全是网站发展的基础
网站安全是网站发展的基础,其重要性是不言而喻的。我们来谈谈PHP网站一些常见的安全防御措施,虽然简单但是能够有效保障网站的安全运行。web服务器方面,不要以root身份运行web程序,关闭目录浏览,确保web目录之外没有提供服务。 防止语义url攻击,对一些敏感信息的输出或者操作要对用户进行验证,最好重新让用户输入验证一次密码。

计算机数学与基础

什么是僵尸进程(zombie)?

僵尸进程常见问题
僵尸进程是指一个已经终止、但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为“僵尸进程”(zombie)。 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构。

PHP服务器脚本

PHP对大文件的处理思路

读取大文件详解
需求: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容。在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心。
2 / 2 首页 < Prev 1 2 Next > 尾页 页码: