[Editplus正则扩展]PHP高级群里关于正则匹配小问题之打开 TR1 正则表达式支持以{1,2}的匹配次数方法,来自:膘哥。

jackxiang 2011-5-3 12:05 | |
平凡的世界<yyddrr@qq.com>  11:42:34
请教一个正则的问题,如何匹配这样的字符串:(1),其中1是一位的数字,前后带小括号,用这三个字符结尾
平凡的世界<yyddrr@qq.com>  11:43:12
比如原字符串:“我是一个中国人(4)”,那这个就匹配。
平凡的世界<yyddrr@qq.com>  11:44:19
这些都不匹配:“我是一个(4)中国人”,“中国人(98)”,“我是一个中国人(4)”,“我是一个中国人(4d)”
回复如下:
单曲(67803698)  11:46:38
$pattern = '/(.*)\([0-9]\)$/';
平凡的世界<yyddrr@qq.com>  11:46:32
多谢单曲,测试一下

解释如下:
(.*): 匹配所有
[0-9]:匹配数字
\(:转意(

测试结果:
我也用editplus正则匹配了下,是Ok的。

\(\d\)$



回忆未来(372647693)  15:18:01
这: (.*)   怎么请?加了括号是什么意思。
我姓->苏(14044522)  15:18:25
任意字符的意思!
回忆未来(372647693)  15:18:54
.*:任意字符的意思
那括号呢?
莫莫(3296320)  15:18:54
任意
莫莫(3296320)  15:19:06
括号可加可不加
春江花月夜(6010707)  15:19:45
加括号可以用$1-9的方式捕获结果
.*\(\d\)$ 也成
春江花月夜(6010707)  15:20:16
如果只是验证字符串的格式,前面的(.*)匹配是多余的
也成,但是我用ediplus的正则发现不行,于是问了下,膘哥说:
editplus 3.2开始就有这个TR1设置:增加「使用 TR1 正则表达式」选项(「首选项」->「常规」)。TR1 regular expression才能\d!
TR1 正则表达式:简单的说,C++ TR1 regular expression library就是C++的正则表达式拓展。而按照帮助文档,该选项提供的正则表达式是ECMAScript(JavaScript)兼容的,比原来的正则表达式功能强大很多。

TR1正则表达式?这是什么东东?赶紧更新到EditPlus 3.21,打开帮助文档一看:

Use TR1 regular expression
Check this option to use C++ TR1 regular expression library instead of the previous regular expression feature. TR1 regular expression supports ECMAScript compatible and has more features but is slower than the previous one.

查了一下维基百科,C++ Technical Report 1 (TR1)是ISO/IEC TR 19768, C++ Library Extensions(函式库扩充)的一般名称。TR1是一份文件,内容提出了对C++标准函式库的追加项目。这些追加项目包括了正则表达式、智能指针、哈希表、随机数生成器等。TR1自己并非标准,他是一份草稿文件。

简单的说,C++ TR1 regular expression library就是C++的正则表达式拓展。而按照帮助文档,该选项提供的正则表达式是ECMAScript(JavaScript)兼容的,比原来的正则表达式功能强大很多。

我一直对EditPlus对正则表达式有限支持耿耿于怀,而Notepad++、UltraEdit、EmEditor等编辑器对于正则表达式的支持也不尽如人意。EditPad对正则表达式的支持很好,但是我又用不习惯,而且搜索多个文件的时候好像也用不了正则表达式。现在EditPlus 3.21增强正则表达式,真是太好了,强烈推荐!

Use TR1 regular expression选项默认设置是没有开启的,要选择Tools->Preferences,勾上才行。现在,只要是JavaScript的正则表达式能做到的,EditPlus也能做到。再次强烈推荐~
http://demon.tw/programming/c-tr1-regular-expression-library.html


再次摘录,以下来自:http://demon.tw/programming/c-tr1-regular-expression-library.html
C++ TR1 regular expression library,这是昨天在EditPlus里看到的,以前一直都没听说过。我不喜欢C++,自然也不会去了解这方面的东西。

据说VS2008 SP1已经基本上完全支持了TR1库,最新的VS2010也支持,正好机器上装有Visual C++ Express 2010,于是测试了一下。

能编译通过,输出2. Egg prices,结果也正确。但是TR1自己并非标准,他是一份草稿文件。然而他所提出的项目很有可能成为下次的官方标准。这份文件的目标在于“为扩充的C++标准函式库建立更为广泛的现成实作品”。当C++编译器开始支持得时候,非标准也许会变成事实的标准。

如果没记错的话这是本博客第一次写和C++有关的东西,但是纯粹是对这个EditPlus用的正则表达式库好奇而已,并不表示我对C++看法的改变。

Just use plain C, I don’t need C++ .

参考链接:

TR1 Regular Expressions:http://msdn.microsoft.com/en-us/library/bb982727.aspx
Getting started with C++ TR1 regular expressions:http://www.johndcook.com/cpp_regex.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4277/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2012-5-29 18:25
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]