zoukankan      html  css  js  c++  java
  • 正则表达式一点迷惑

      正则表达式很强大,当然,也很复杂,我看到有本书专门讲这个,不过内容没看,没耐心。我看的是:《30分钟精通正则表达式》。

      当然,讫今已经不知道看了多少个30分钟了,还是搞不懂一些基本问题,比如这个:

                var match = Regex.Match("0px", @"^0|\d+px$";
                Console.WriteLine(match.Value);

      结果输出0,为什么不是0px呢?如果将pattern倒过来"^\d+px\0$",就可以匹配0px。

      如同.Net中的指针运用一样,掌握正则表达式好像还是一个高级的编程技能,有两三年经验的程序员,连掌握基本语法的都很少。其实学一点正则很有用,但深入下去看来不是那么容易。

      还有那些Group/Capture,还有各种元组之类概念,这些的原理和应用都讲清楚,恐怕真得有一本书。表达式可以搞得非常复杂,比如像VSPaste插件中用的表达式(让VSPaste支持粘贴的中文),应该是很牛的人写的。不过一般人用起来,既难懂又难维护,我想这种情况下,还不如自己写写查找的代码。

      有时间学习一下.Net中正则表达式的相关源代码,一定会很有帮助。继续深入研究最普通又最深奥的文字处理!

      补充:终于明白了,原来是因为 | 符号优先级最高。"^repeat(?:-x|-y)?|no-repeat$"匹配"**no-repeat"依然成功,应该在|两边的表达式各加上起止符号,或将起止符中间的表达式括起来。

      .Net中有一个RegexOptions选项ExplicitCapture枚举值,可以省去?:,只捕获有命名的分组。

  • 相关阅读:
    python之面向对象之类变量和实例变量
    python之面向对象之封装
    python之shutil模块
    利用python实现冒泡排序
    利用python实现二分法和斐波那契序列
    thinkphp input
    从右向左
    全局修改composer源地址
    Git忽略规则及.gitignore规则不生效的解决办法
    mysql主从数据库不同步的2种解决方法 (转载)
  • 原文地址:https://www.cnblogs.com/XmNotes/p/1883491.html
Copyright © 2011-2022 走看看