C#:正则表达式应该是什么?

时间:2010-02-03 02:18:45

标签: c# regex text

我知道那里有很多ASN.1解析器,但是它们花费了很多,因此,我正在努力编写自己的解析器。

我对正则表达式有点新意,所以为了提取占位符A,B,C和D的文本,正则表达式在C#中应该是什么?

A ::= B
{
    C1 D1,
    C2 D2,
    C3 D3
}

其中A,C和D可以是由以下

的任意组合组成的任何有效单词
  • A-Z
  • a-z
  • 0-9
  • _

B可以是任何ASN.1类型,例如“SEQUENCE”,“SEQUENCE OF”,“CHOICE”,“UTF8String”等。完整列表可以在此“{Universal Class Tags”表中找到{{ 3}}

1 个答案:

答案 0 :(得分:1)

你的意思是你想要将整个构造与一个正则表达式匹配?这是个坏主意。正则表达式可用作解析器的组件,但最好将其角色保持在最低限度。不要尝试匹配大块文本,尤其是递归或循环结构。在许多情况下,C#正则表达式足以处理这类事情,但不是全部 - 而且无论如何这都超出了初学者的水平。

我建议您在不使用正则表达式的情况下进行尝试。否则你会不断分散自己的注意力,想知道你尚未学习的正则表达式技术如何使当前任务更容易,或者更优雅地解决问题(如果你原谅我的语言)。专注于编写可靠的,可读的可维护的代码 - 这是正则表达式的另一个弱点。