使用Python解析Java源代码文件

3
我有一堆Java源文件。我需要编写一个Python脚本,遍历源文件并识别所有字符串字面量及其位置。
问题在于这些字符串可能有几种不同的形式,例如:
1. 字符串文字 - "Hello World" 2. 文字的组合 - "Hello" + "World"
我想出了几个方法来完成这个任务:
1. 逐行查找源文件,寻找“和使用它来识别字符串的位置 2. 使用正则表达式
你对我提出的方法有什么意见或者其他我没有想到的方法吗?
如果你好奇的话,我们正在对我们的代码库进行国际化。这就是为什么我试图自动化这个过程的原因。
3个回答

4

使用re模块是最快的解决方案。

您可以使用re.finditer()函数,它会返回每个匹配的正则表达式及其内容和位置。

>>> for m in re.finditer(r"\w+ly", text):
...     print '%02d-%02d: %s' % (m.start(), m.end(), m.group(0))

哇!太酷了。使用这个正则表达式 "\"([^\"\\\\]|\\\\.)*\"", 真是太神奇了。 - user489041
1
为什么不在双引号前使用r以避免\\? - igni

2
另一个选项是PLY,它是一个纯Python的lex/yacc。它由David Beazley编写...他有一些幻灯片展示了其功能。这将需要一个BNF语法来量化您正在解析的语法。我不确定您是否想走到那一步。
如果您不想使用BNF,pyparsing也是另一个选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接