一个完整的正则表达式是由元字符和其他“文字”构成的,单个元字符就是正则表达式的最小单元,丰富的元字符提供强大的描述能力。我把正则表达式看成一种独立处理功能。那么在不同环境(Windows、MacOS…)、语言(.NET、Java、Python、Perl、PHP、MySQL、MSSQL、Ruby…)上面它会有很些差异,比如:字符串、字符编码、匹配模式。
一、字符串
这里的字符串是指正则引擎接收的字符串,我们知道一串字符串是用一对双引号标注,反斜线是元字符,但是在不同语言上面它们要表达同一个元字符有区别的。
JAVA:
Pattern regex = Pattern.compile("\\d", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.MULTILINE);
C#:
Regex regexObj = new Regex(@"\d", RegexOptions.IgnoreCase | RegexOptions.Multiline);
不同之处是\\d和\d的区别。至少C#看起来更简洁一点(@代表字符串是原生字符串,这种方式PHP同样也支持,当然还有更多)。
二、字符编码
字符编码是一种写明的共识,它规定不同数值的字节应该如何解释。
由于正常情况下不需要人工干涉所以我对这一节只是做一个了解而已。懒啊····
三、匹配模式
许多正则引擎都支持多种不同的模式,它们规定了正则表达式应该如何解释和应用。
我觉得我还是整理一下我常用的语言(C#)单独深入讨论。
常用的元字符和特性
以下是我用大量时间去整理出来,我针对.NET的一张表格,算是做为我个人的手册之一:
| 描述 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字符表示法 | 单词分界符 \b、退格字符 \b、警报 \a、ASCII Escape \e、进纸符 \f、换行符 \n、回车符 \r、制表符 \t | |||||||||||||||
| 字符组相关 |
|
|||||||||||||||
| 锚点、零长度断言 | 锚点、零长度断言并不会匹配实际的文本,而是寻找文本中的位置。
|
|||||||||||||||
| 分组、捕获、条件判断、控制 |
|
|||||||||||||||
| 注释和模式修饰符 |
|
参考资料

近期评论