请告诉我如何从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上意识到这一点
答案 0 :(得分:1)
对于您的有限用例,您不需要像解析器那样正式的任何内容。正则表达式就足够了。
编写与传统引用字符串匹配的正则表达式并不困难:'['\r\n]*'
。同样,只要您不关心限制匹配*:#(\d+|\$[0-9A-Fa-f]+)
的数字范围,编写表达式以匹配字符代码并不复杂。一旦你拥有了这些构建块,你只需要将它们组合在一起:
('[^\n\r']*'|#(\d+|\$[0-9A-Fa-f]+))+
这适用于大多数代码,但对于任意 Delphi文件来说还不够。该正则表达式可以匹配内部注释。更糟糕的是它可能匹配似乎跨越评论的文本。例如:
{ 'foo{}'
这是一条评论后面跟一个引号,而不是字符串文字foo{}
。您可以通过扩充正则表达式以匹配注释来解决此问题。然后,在处理结果时,请跳过评论。
*您不必担心数字范围,因为您可以期望针对有效的 Delphi代码运行您的程序。