什么是最好的正则表达式生成器/解释器

时间:2011-10-25 00:26:32

标签: c# regex

我是编程新手,我正在使用C#2010。在我需要维护的代码中有一些很长(50行)的正则表达式。此外,我需要解析一些包含大量信息的文本文件。你能为这些任务推荐一款工具吗?

5 个答案:

答案 0 :(得分:11)

单击“解释”复选框,然后点击http://myregextester.com上的提交,您将获得YAPE::Regex::Explain

的精彩输出
The regular expression:

(?-imsx:[foo]bar(baz))

matches as follows:

NODE                     EXPLANATION
----------------------------------------------------------------------
(?-imsx:                 group, but do not capture (case-sensitive)
                         (with ^ and $ matching normally) (with . not
                         matching \n) (matching whitespace and #
                         normally):
----------------------------------------------------------------------
  [foo]                    any character of: 'f', 'o', 'o'
----------------------------------------------------------------------
  bar                      'bar'
----------------------------------------------------------------------
  (                        group and capture to \1:
----------------------------------------------------------------------
    baz                      'baz'
----------------------------------------------------------------------
  )                        end of \1
----------------------------------------------------------------------
)                        end of grouping
----------------------------------------------------------------------

答案 1 :(得分:7)

两个工具:

regexbuddy - > http://www.regexbuddy.com/

和expresso - > http://www.ultrapico.com/Expresso.htm

首先不是免费而第二是。两者都提供类似的特征我个人使用的第一个不知道为什么:D

答案 2 :(得分:4)

另一个在线工具:http://gskinner.com/RegExr/

答案 3 :(得分:2)

@Lincoln 我同情你的问题。遗憾的是,正则表达式对内部文档的作用范围很小,因此50行的正如二进制程序。请注意,如果你改变其中的1个字符,整个事情就会破裂。例如,Here是日期的正则表达式:

  

^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$

     

分析此正则表达式,RegexBuddy匹配日期   yyyy-mm-dd1900-01-01之间的2099-12-31格式,带有   选择四个分离器。锚点确保整个变量   是一个日期,而不是包含日期的文本。这一年是   由(19|20)\d\d匹配。我使用交替来允许前两个   数字为1920

如果您不知道这是一个约会,那么就需要采用类似侦探或密码分析的方法来解决它正在做的事情。正则表达式伙伴等会有所帮助,但不会给出语义。

我的猜测是你的50行正则表达式(当我写这些单词时我感到不寒而栗)会有日期和公司ID以及地址和善良知道嵌入其中的内容。

唯一的好消息是,正则表达式对语言的依赖程度低于以往。因此,如果它最初是用Java编写的,那么它可能适用于C#,反之亦然。

它只是用于识别字段还是有捕获组?这些是平衡括号,通过API将子字段提取到程序中。通过检查这些字段包含的内容,您可能会有一个指向正则表达式的有用指针。

务实,除非它在关键路径上,尝试尽可能少地触摸它!

答案 4 :(得分:1)

刚刚找到一个非常酷的正则表达式 explainer 工具:

http://www.regexper.com/
在幕后,RegExper是一个Ruby应用程序,它将正则表达式转换为SVG图像.SVG嵌入在页面中,但应该可以提取或复制它以用于您自己的文档。

有关更多信息,请阅读此博文:

http://www.sitepoint.com/regexper-regular-expressions-explained/