【问题标题】:Parse Java Source Files with Python [closed]使用 Python 解析 Java 源文件 [关闭]
【发布时间】:2011-08-08 19:10:04
【问题描述】:

我有一堆 Java 源文件。我需要编写一个 python 脚本来遍历源文件并识别所有字符串文字及其位置。

问题是字符串可能有几种不同的形式,例如:

  1. 字符串文字 - “Hello World”
  2. 文字组合 - “Hello” + “World”

我想出了几个想法来实现这一点:

  1. 逐行查找源文件并使用它来识别字符串的位置
  2. 使用正则表达式

您对我建议的执行此操作的方法或其他我没有考虑过的方法有任何意见吗?

如果您想知道,是否正在对我们的代码库进行国际化。这就是我尝试自动化这个过程的原因。

【问题讨论】:

    标签: python regex parsing


    【解决方案1】:

    另一个选项是PLY,它是一个纯python lex / yacc。它是由 David Beazley 编写的……他有一些 slides 来演示该功能。这将需要 BNF 语法来量化您正在解析的语法。我不确定你是否想走那么远。

    如果你不想使用 BNF,pyparsing 是另一个选择。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

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

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

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

      【讨论】:

      • 哇!很酷。使用这个正则表达式"\"([^\"\\\\]|\\\\.)*\"",效果惊人
      • 为什么不在 "" 之前使用 r 以避免 \\\\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2020-09-20
      • 1970-01-01
      相关资源
      最近更新 更多