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枚举值,可以省去?:,只捕获有命名的分组。

  • 相关阅读:
    bootstrap多选框
    window.open()总结
    sql游标及模仿游标操作
    表变量及临时表数据批量插入和更新 写法
    表变量类型的创建及使用
    事物及exec
    [NOI2017]蚯蚓排队
    [NOI2017]游戏
    [NOI2017]蔬菜
    luogu P4194 矩阵
  • 原文地址:https://www.cnblogs.com/XmNotes/p/1883491.html
Copyright © 2011-2022 走看看