Software Development - 正则表达式风味(引擎)对比

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程

正则表达式风味(引擎)说明

风味是规范,引擎是实现。

名称说明应用
.NET由 System.Text.RegularExpressions 相关类 提供的正则引擎。基于 .Net 的语言和软件。如 C#, Visual Basic.Net, F#, Powershell, Delphi for .NET 等。
Java由 java.util.regex 包提供, 在 Java 4 (JDK 1.4.x) 及更新的版本中可用。在 Java 5 (JDK 1.5.x) 和 6 (JDK 1.6.x) 中添加了一些新功能。基于 JVM 的语言和软件,如 Java, Clojure 等。
Perl内置于 Perl 的正则表达式引擎,5.6 之前的版本不支持 Unicode。Perl 编程语言。
PCRE来自开源项目 PCRE正则表达式引擎。 本文介绍的功能在 PCRE 5.x 和 6.x 中可用。REALbasic(Xojo) 语言; Delphi 组件 TPerlRegEx 和 Delphi XE 和 C++Builder XE 的单元 RegularExrpessions 和 RegularExpressionsCore; PHP 的 preg 函数; R 语言(perl = true); COM 对象 Microsoft VBScript Regular Expressions 5.5。
JS(JavaScript)由 ECMA-262 标准第 3 版定义的脚本语言(ECMAScript)中的正则表达式语法。JavaScript 编程语言;VBScript 中的 RegExp;ClojureScript 编程语言。
Python由 Python 内置模块 re 支持。Python 编程语言。
Ruby由 Ruby 内置的正则表达式引擎Ruby 编程语言。
Tcl ARE由 Henry Spencer 为 Tcl 8.2/8.4 中命令 regexp 开发,被称为高级正则表达式(Advanced Regular Expressions, ARE)Tcl 编程语言;PostgreSQL 7.4 及更新版本;wxWidgets(wxRE_ADVANCED)。
POSIX BRE由 IEEE POSIX 标准 1003 定义的基本正则表达式(Basic Regular Expressions)Unix 上的软件工具;R 语言(perl = false, extended = false);Tcl的 基本风味(Extended Regular Expressions),wxWidgets(wxRE_BASIC)。
POSIX ERE由 IEEE POSIX 标准 1003 定义的扩展正则表达式(Extended Regular Expressions)Unix 上的软件工具,如 awk, grep, egrep, emacs 等(Emacs 不支持 POSIX 字符类, 排序序列和等值字符); MySQL, Oracle 数据库( Oracle 支持标准外的后向引用,从 \1 到 \9),PostgreSQL 7.3 及更早版本; PHP 的 ereg 函数,R 语言默认状态,Tcl 的扩展风味(Extended Regular Expressions),wxWidgets(wxRE_EXTENDED)。
GNU BREGNU 基本正则表达式(GNU Basic Regular Expressions), 包含 POSIX BRE 及 GNU 扩展。GNU 实现的经典 UNIX 工具,如 GNU/Linux 上的 sed 等。
GNU EREGNU 扩展正则表达式(Extended Regular Expressions), 包含 POSIX ERE 及 GNU 扩展。GNU 实现的经典 UNIX 工具,如 GNU/Linux 上的 egrep, grep 等。
XML由 XML Schema 标准的附录 G定义。XML Schema。
XPath由 XQuery 1.0 和 XPath 2.0 标准中的函数与运算符章节定义。XQuery, XPath。
JGsoft由 Just Great Software 产品使用的正则表达式引擎PowerGREP, EditPad Pro, AceText, RegexBuddy 等。

正则表达式风味(引擎)特性对比

字符
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\ 转义单个元字符YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
\Q...\E 转义多个元字符YESnoJava 6YESYESnononononononononono
\x00 ~ \xFF (ASCII 字符)YESYESYESYESYESYESYESYESYESnononononono
\n (换行), \r (回车), \t (制表)YESYESYESYESYESYESYESYESYESnonononoYESYES
\f (换页), \v (竖直制表)YESYESYESYESYESYESYESYESYESnononononono
\a (响铃)YESYESYESYESYESnoYESYESYESnononononono
\e (转义)YESYESYESYESYESnonoYESYESnononononono
\b (退格), \B (反斜杠, \)nonononononononoYESnononononono
\cA ~ \cZ (控制字符)YESYESYESYESYESYESnonoYESnononononono
\ca ~ \cz (控制字符)YESYESnoYESYESYESnonoYESnononononono
字符类/字符集 [abc]
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
[abc] 字符类YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
[^abc] 反义字符类YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
[a-z] 字符类范围YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
[\d-z] 中的 - 视为字面量YESYESYESYESYESnononononononononono
[a-\d] 中的 - 视为字面量YESnononoYESnononononononononono
\ 转义单个字符类元字符YESYESYESYESYESYESYESYESYESnonononoYESYES
\Q...\E 转义多个字符类元字符YESnoJava 6YESYESnononononononononono
\d 代表数字YESYESasciiYESasciiasciioptionasciiYESnonononoYESYES
\w 代表单词字符YESYESasciiYESasciiasciioptionasciiYESnonoYESYESYESYES
\s 代表空白字符YESYESasciiYESasciiYESoptionasciiYESnonoYESYESasciiascii
\D\W and \S 代表反义字符类YESYESYESYESYESYESYESYESYESnonoYESYESYESYES
[\b] 匹配反斜杠(\)YESYESYESYESYESYESYESYESYESnononononono
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
. 匹配换行符(\n)外所有字符YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
锚点
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
^ 字符串/行开始YESYESYESYESYESYESYESYESYESYESYESYESYESnoYES
$ 字符串/行结束YESYESYESYESYESYESYESYESYESYESYESYESYESnoYES
\A 字符串开始YESYESYESYESYESnoYESYESYESnononononono
\Z 字符串结束,最后一个\n前YESYESYESYESYESnonoYESYESnononononono
\z 字符串结束YESYESYESYESYESno\ZYESnonononononono
\` 字符串开始nononononononononononoYESYESnono
\' 字符串结束nononononononononononoYESYESnono
单词边界
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\b 单词的开始或结束处YESYESYESYESasciiasciioptionasciinononoYESYESnono
\B 不是单词的开始处或结束处YESYESYESYESasciiasciioptionasciinononoYESYESnono
\y 单词的开始或结束处YESnononononononoYESnononononono
\Y 不是单词的开始处或结束处YESnononononononoYESnononononono
\m 单词的开始处YESnononononononoYESnononononono
\M 单词的结束处YESnononononononoYESnononononono
\< 单词的开始处nononononononononononoYESYESnono
\> 单词的结束处nononononononononononoYESYESnono
分支条件
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
| 分支条件YESYESYESYESYESYESYESYESYESnoYES\|YESYESYES
量词
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
? 0 ~ 1 次YESYESYESYESYESYESYESYESYESnoYES\?YESYESYES
* 0 次或更多次YESYESYESYESYESYESYESYESYESYESYESYESYESYESYES
+ 1 次或更多次YESYESYESYESYESYESYESYESYESnoYES\+YESYESYES
{n} n 次YESYESYESYESYESYESYESYESYES\{n\}YES\{n\}YESYESYES
{n,m} n ~ m 次YESYESYESYESYESYESYESYESYES\{n,m\}YES\{n,m\}YESYESYES
{n,} n 次或更多次YESYESYESYESYESYESYESYESYES\{n,\}YES\{n,\}YESYESYES
量词后加 ? 转为懒惰模式YESYESYESYESYESYESYESYESYESnononononoYES
分组与后向引用
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(regex) 编号捕获组YESYESYESYESYESYESYESYESYES\( \)YES\( \)YESYESYES
(?:regex) 非捕获组YESYESYESYESYESYESYESYESYESnononononono
\1 ~ \9 后向引用YESYESYESYESYESYESYESYESYESYESnoYESYESnoYES
\10 ~ \99 后向引用YESYESYESYESYESYESYESYESYESnon/anonon/aYES
前向引用 \1 through \9YESYESYESYESYESnonoYESnonon/anonon/ano
嵌套引用 \1 ~ \9YESYESYESYESYESYESnoYESnonon/anonon/ano
后向引用不存在的组报错YESYESYESYESYESnoYESnoYESYESn/aYESYESn/aYES
后向引用匹配失败的组失败YESYESYESYESYESnoYESYESYESYESn/aYESYESn/aYES
修饰器
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?i) 忽略大小写YESYESYESYESYES/i onlyYESYESYESnononononoflag
(?s) 点(.)可匹配\nYESYESYESYESYESnoYES(?m)nonononononoflag
(?m) 行开始/结束可匹配 ^ / $YESYESYESYESYES/m onlyYESalways onnonononononoflag
(?x) 忽略空白模式YESYESYESYESYESnoYESYESYESnononononoflag
(?n) 显式匹配YESYESnonononononononononononono
(?-ismxn) 关闭模式修饰器YESYESYESYESYESnonoYESnonononononono
(?ismxn:group) 模式修饰器仅应用于本组YESYESYESYESYESnonoYESnonononononono
原子组与占位量词(possessive quantifiers)
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?>regex) 原子组YESYESYESYESYESnonoYESnonononononono
?+*+, ++, {m,n}+ 占位量词YESnoYESnoYESnononononononononono
断言
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?=regex) 正预测先行断言YESYESYESYESYESYESYESYESYESnononononono
(?!regex) 负预测先行断言YESYESYESYESYESYESYESYESYESnononononono
(?<=text) 正回顾后发断言full regexfull regexfinite lengthfixed lengthfixed + alternationnofixed lengthnononononononono
(?<!text) 负回顾后发断言full regexfull regexfinite lengthfixed lengthfixed + alternationnofixed lengthnononononononono
从上个匹配继续
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\G 匹配尝试的开始YESYESYESYESYESnonoYESnonononononono
条件
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?(?=regex)then|else) 使用任意断言YESYESnoYESYESnononononononononono
(?(regex)then|else)noYESnonononononononononononono
(?(1)then|else)YESYESnoYESYESnoYESnononononononono
(?(group)then|else)YESYESnonoYESnoYESnononononononono
注释
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?#comment)YESYESnoYESYESnoYESYESYESnononononono
忽略空白
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
支持忽略空白语法YESYESYESYESYESnoYESYESYESnononononoYES
字符类作为整体YESYESnoYESYESn/aYESYESYESn/an/an/an/an/aYES
# 开启注释YESYESYESYESYESn/aYESYESYESn/an/an/an/an/ano
Unicode 字符
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\X Unicode 字素YESnonoYESoptionnononononononononono
\u0000 ~ \uFFFF (Unicode 字符)YESYESYESnonoYESu"string"noYESnononononono
\x{0} ~ \x{FFFF} (Unicode 字符)YESnonoYESoptionnononononononononono
Unicode 属性, 脚本与区块
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\pL ~ \pC (Unicode 属性)YESnoYESYESoptionnononononononononono
\p{L} ~ \p{C} (Unicode 属性)YESYESYESYESoptionnonononononononoYESYES
\p{Lu} ~ \p{Cn} (Unicode 属性)YESYESYESYESoptionnonononononononoYESYES
\p{L&}\p{Letter&} 等同于 [\p{Lu}\p{Ll}\p{Lt}] Unicode 属性YESnonoYESoptionnononononononononono
\p{IsL} ~ \p{IsC} (Unicode 属性)YESnoYESYESnonononononononononono
\p{IsLu} ~ \p{IsCn} (Unicode 属性)YESnoYESYESnonononononononononono
\p{Letter} ~ \p{Other} (Unicode 属性)YESnonoYESnonononononononononono
\p{Lowercase_Letter} ~ \p{Not_Assigned} (Unicode 属性)YESnonoYESnonononononononononono
\p{IsLetter} ~ \p{IsOther} (Unicode 属性)YESnonoYESnonononononononononono
\p{IsLowercase_Letter} ~ \p{IsNot_Assigned} (Unicode 属性)YESnonoYESnonononononononononono
\p{Arabic} ~ \p{Yi} (Unicode 脚本)YESnonoYESoptionnononononononononono
\p{IsArabic} ~ \p{IsYi} (Unicode 脚本)YESnonoYESnonononononononononono
\p{BasicLatin} ~ \p{Specials} (Unicode 区块)YESnonoYESnonononononononononono
\p{InBasicLatin} ~ \p{InSpecials} (Unicode 区块)YESnoYESYESnonononononononononono
\p{IsBasicLatin} ~ \p{IsSpecials} (Unicode 区块)YESYESnoYESnononononononononoYESYES
上方 {} 中的内容忽略大小写YESnonoYESnonononononononononono
上方语法中长名称允许空格,边字符,下划线 (如 BasicLatin 可写为 Basic-Latin 或 Basic_Latin 或 Basic Latin)YESnoJava 5YESnonononononononononono
\P 上方所有 \p 的反义YESYESYESYESoptionnonononononononoYESYES
\p{^...} 上方所有 \p{...} 的反义YESnonoYESoptionnononononononononono
命名捕获与后向引用
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
(?<name>regex) .Net 风格的命名捕获分组YESYESnonononononononononononono
(?'name'regex) .Net 风格的命名捕获分组YESYESnonononononononononononono
\k<name> .Net 风格的命名后向引用YESYESnonononononononononononono
\k'name' .Net 风格的命名后向引用YESYESnonononononononononononono
(?P<name>regex) Python 风格的命名捕获分组YESnononoYESnoYESnononononononono
(?P=name) Python 风格的命名后向引用YESnononoYESnoYESnononononononono
多个捕获组同名YESYESn/an/anon/anon/an/an/an/an/an/an/an/a
XML 字符类
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
\i\I\c\C XML 名称字符类nononononononononononononoYESYES
[abc-[abc]] 字符类差集YES2.0nononononononononononoYESYES
POSIX 方括号表达式
特性JGsoft.NETJavaPerlPCREJSPythonRubyTcl AREPOSIX BREPOSIX EREGNU BREGNU EREXMLXPath
[:alpha:] POSIX 字符类YESnonoYESasciinonoYESYESYESYESYESYESnono
\p{Alpha} POSIX 字符类YESnoasciinononononononononononono
\p{IsAlpha} POSIX 字符类YESnonoYESnonononononononononono
[.span-ll.] POSIX 排序序列nonononononononoYESYESYESYESYESnono
[=x=] POSIX 等值字符nonononononononoYESYESYESYESYESnono
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则表达式工具:JGsoft RegexBuddy v3.4.2 零售版无需要注册激活 正则表达式 - 正则表达式工具 JGsoft RegexBuddy v3.4.2 Retail JGsoft RegexBuddy 是一款正则表达式工具。它是你使用正则表达式时的最好的助手。容易创建完全符合你的要求的正则表达式。清除地理解其他人写的复杂的正则表达式。通过示例字符串和文件,快速测试任意正则表达式,防止在处理真实数据时发生错误。根据你使用的特定的编程语言自动在你的源代码中使用正则表达式代码片断。收集归档正则表达式例库以便将来重用。可以把RegexBuddy整合到你喜好的搜索和编辑工具里,以便快速使用。 RegexBuddy 使用 RegexBuddy 可以创建规范的正规表达式。该软件可以编译由其它软件编写的复杂的正规表达式。使用纯英文模块代替标准的 Regex 语法。在样本行和文件上测试任何规范的表达式,防止在实际数据上发生错误。通过分步完成真实的匹配过程来进行调试而不是单凭猜测。可以在你的自动地调整为 C#, VB.NET, Java, C, C++, Delphi, Perl, PHP, Python, JavaScript 和 Ruby 特殊细节的带有代码摘录的源代码当中使用 Regex。 RegexBuddy is your perfect companion for working with regular expressions. Easily create regular expressions that match exactly what you want. Clearly understand complex regexes written by others. Quickly test any regex on sample strings and files, preventing mistakes on actual data. Debug without guesswork by stepping through the actual matching process. Use the regex with source code snippets automatically adjusted to the particulars of your programming language. Collect and document libraries of regular expressions for future reuse. GREP (search-and-replace) through files and folders. Integrate RegexBuddy with your favorite searching and editing tools for instant access. History - http://www.regexbuddy.com/history.html Release year: 2010 Site: http://www.regexbuddy.com OS: Windows 98, ME, NT4, 2000, XP, Vista, and 7 Language: Eng. Activation/Crack/Serial/etc: It is not required (Full) Size: 9.34 MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值