各种语言正则表达式语法比较

----------摘自 http://www.yangwo.net


每种编程语言都有自己的正则表达式吗???不是通用的吗?上网时看到 java 正则表达式 js 正则表达式 php 正则表达式 asp.net 正则表达式 vb 正则表达式

一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。正则表达式严格说起来是一个抽象的数学概念,这个东西和SQL语句一样,其实各个语言的实现版本基本上都是相同的,无论是java还是perl、js、vb等语言,他们提供的正则表达式核心都是相同的,只是执行的函数、调用的语法、返回匹配项的获取有一些语法规则上的区别。

PHP与javascript正则表达式区别


正则里面很多语法都是以perl为模版,php本身有两套,一套是perl的语法,另一套是posix的语法,其它都大同小异
以下是它们之间的比较:总体上,PHP的正则比标准javascript的要强大。
PHP有两套正则库,一是posix兼容库(php5.3之前版本可用),而是perl兼容库(主力库)
perl兼容库中支持而js正则不支持的:
1、支持(? 2、许多预置字符类(:alnum:)
3、支持组标识(?<>
4、支持子组同名(?|
5、支持独立子组(?>
6、支持条件子组(?()
7、支持递归子组(?R)
8、支持本地编码,js只支持unicode
9、修正器更多
10、等等等等细节上的丰富。
总之,js的正则库在php正则面前显得只是一个简约的基础库。

编程实现是细节活,粗枝大叶的结果就是问题多多。一定要弄清楚

各种语言工具正则表达式语法比较


grep 2.5.1 egrep 2.5.1 sed 3.02
sed 4.07
awk 3.1.1 perl 5.8.0 vim 6.1 JavaScript
转义\\\\\\\
行头^^^^^^^
行尾$$$$$$$
n个 {n} {m,n} {m,} {,n}\{n\}{n}\{n\}{n}或\{n\} 仅定义 --posix 或 --re-interval有效(要表达}和{,得用\\{和\\} 没有定义--posix或--re-interval时,不能用{n}的语法, \}\{和}{同义{n}\{n\}{n}
{0,}****或\*, (要表达*,得用\\*)***
{1,}\++\++或\+, (要表达+, 得用\\+)+\++
{0,1}\??\??或\?, (要表达?, 得用\\?)?\??
任意字符.... 含\n.. /s修饰后则含\n. 除\n. 除\n
(pat) 匹配并获结果\(pat\)(pat)\(pat\)(pat)或\(pat\) (要表达括号,用\\( \\) )(pat)\(pat\)(pat)
(?:pat) 匹配但不获结果不支持不支持不支持不支持(?:pat)不支持(?:pat)
(?=pat) 等于预查不支持不支持不支持不支持(?=pat)不支持(?=pat)
(?!pat) 不等预查不支持不支持不支持不支持(?!pat)不支持(?!pat)
| 或\||\||或\| (要表达|,得用\\|)|\||
其中任意字符[xyz][xyz][xyz][xyz][xyz][xyz][xyz]
[.ch.] [=ch=]不支持不支持[.ch.]不支持不支持不支持不支持
单词边界 \b\b\b\b不支持\b不支持\b
非单词边界 \B\B\B\B不支持\B不支持\B
单词左右边界 <>\< \>\< \>\< \>不支持 (><和\>\<和\\>\\<同义不支持(><和\>\<同义\< \>不支持(><和\>\<同义
控制字符 /cx不支持不支持\cx不支持\cx不支持\cx
数字\d不支持不支持不支持不支持\d\d\d
非数字\D不支持不支持不支持不支持\D\D\D
换页 \f不支持不支持高版本支持\f\f另义 \f表示文件名字符\f
换行 \n不支持不支持不支持\n\n\n\n
回车 \r不支持不支持\r\r\r\r\r
空白 \s不支持不支持不支持不支持\s\s\s
非空白 \S不支持不支持不支持不支持\S\S\S
制表符 \t不支持不支持高版本支持\t\t\t\t
垂直制表符 \v不支持不支持高版本支持\v\v另义 \v表示very magic\v
单词字符 \w [A-Za-z0-9_]\w\w\w不支持\w\w\w
非单词字符 \W [^A-Za-z0-9]\W\W\W不支持\W\W\W
\xn 16进制不支持不支持高版本支持\xn\xn另义 \x表示[0-9A-Za-z]\xn
\n 八进制不支持不支持不支持\n\n不支持\n
\n 后向引用\n\n\n\n 仅取结果可用\n\n 仅取结果可用\n
[:alnum:] 字母和数字[:alnum:][:alnum:][:alnum:][:alnum:][:alnum:][:alnum:]不支持
[:alpha:] 字母[:alpha:][:alpha:][:alpha:][:alpha:][:alpha:][:alpha:]不支持
[:cntrl:] 控制字符[:cntrl:][:cntrl:][:cntrl:][:cntrl:][:cntrl:][:cntrl:]不支持
[:digit:] 数字[:digit:][:digit:][:digit:][:digit:][:digit:][:digit:]不支持
[:graph:] 可打印字符(不含空格)[:graph:][:graph:][:graph:][:graph:][:graph:][:graph:]不支持
[:lower:] 小写[:lower:][:lower:][:lower:][:lower:][:lower:][:lower:]不支持
[:print:] 可打印字符(含空格)[:print:][:print:][:print:][:print:][:print:][:print:]不支持
[:punct:] 标点[:punct:][:punct:][:punct:][:punct:][:punct:][:punct:]不支持
[:space:] 空格[:space:][:space:][:space:][:space:][:space:][:space:]不支持
[:upper:] 大写字母[:upper:][:upper:][:upper:][:upper:][:upper:][:upper:]不支持
[:xdigit:] 16进制数字[:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:]不支持
[:return:]不支持不支持不支持不支持不支持[:return:]不支持
[:tab:]不支持不支持不支持不支持不支持[:tab:]不支持
[:escape:]不支持不支持不支持不支持不支持[:escape:]不支持
[:backspace:]不支持不支持不支持不支持不支持[:backspace:]不支持

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值