提取字符串文字Delphi

时间:2016-11-24 08:09:05

标签: python parsing delphi string-literals

请告诉我如何从Delphi文件中提取所有字符串文字。 引号包围的文字没有问题。但字符串文字也可以表示为哈希码。它也可以由引用部分和哈希码组成。例如:

#1072#1073#1074#1075#1076', qwerty'#1072#1073#1074#1075#1076
'qwerty, '#1074#1075#1076
#1072#1073#1074#1075#1076', qwerty'
#1072#1073#1074#1075#1076', qwerty#1076'

我需要提取所有这些文字 我只需要一个想法。我会在Phyton上意识到这一点

1 个答案:

答案 0 :(得分:1)

对于您的有限用例,您不需要像解析器那样正式的任何内容。正则表达式就足够了。

编写与传统引用字符串匹配的正则表达式并不困难:'['\r\n]*'。同样,只要您不关心限制匹配*:#(\d+|\$[0-9A-Fa-f]+)的数字范围,编写表达式以匹配字符代码并不复杂。一旦你拥有了这些构建块,你只需要将它们组合在一起:

('[^\n\r']*'|#(\d+|\$[0-9A-Fa-f]+))+

这适用于大多数代码,但对于任意 Delphi文件来说还不够。该正则表达式可以匹配内部注释。更糟糕的是它可能匹配似乎跨越评论的文本。例如:

{ 'foo{}'

这是一条评论后面跟一个引号,而不是字符串文字foo{}。您可以通过扩充正则表达式以匹配注释来解决此问题。然后,在处理结果时,请跳过评论。

*您不必担心数字范围,因为您可以期望针对有效的 Delphi代码运行您的程序。